全局获取Context的技巧(再也不要为获取Context而感到烦恼)
16lz
2021-01-26
前言:
Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化,而我们可以定制一个自己的Application类,以便管理程序内的一些全局状态信息,比如说全局Context。
定制自己的Application只需要继承Application就可以了。
public class MyApplication extends Application { private static Context mContext; @Override public void onCreate() { super.onCreate(); //获取context mContext = getApplicationContext(); } //创建一个静态的方法,以便获取context对象 public static Context getContext(){ return mContext; }}
是不是很简单,当然还要修改Manifest中的内容,用以告诉程序启动时初始化Myapplication类,而不是Application类。下面我就用一个简单的实例来演示一下吧。
效果展现:
效果解释:我在MainActivity中的onCreate()方法中调用自定义的一个类中的方法,这个方法中有Toast()方法。
实现步骤:
1.自定义一个类继承Applicatioon类
public class MyApplication extends Application { private static Context mContext; @Override public void onCreate() { super.onCreate(); //获取context mContext = getApplicationContext(); } //创建一个静态的方法,以便获取context对象 public static Context getContext(){ return mContext; }}
2.在Manifest添加一句语句:原因上面说过了
<application //注意是完整的路劲,我这个是因为前面有一句:package="com.example.getcontexttest" android:name=".util.MyApplication" ............ </application>
3.自定义一个类,创建一个静态方法,用于验证:
public class GetContext { public static void toastNews(){ Context context = MyApplication.getContext(); Toast.makeText(context, "hello world", Toast.LENGTH_SHORT).show(); }}
最后调用这个方法:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GetContext.toastNews(); }}
更多相关文章
- android中httpclient和HttpURLConnection优缺点和常见bug解决方
- 梳理Android的IPC进程间通信(最新AndroidStudio的AIDL操作)
- Android(安卓)Studio3.0 apk安装时提示受损解决方法
- Android(安卓)应用性能优化
- 初学android第一章、第二章
- Android(安卓)WebView 精简Demo
- android 4.4 以上沉浸式状态栏和沉浸式导航栏管理,一句代码轻松实
- Android中控制软键盘的方法总结
- [置顶] android Activity和service深入介绍