本篇博客是学习《第一行代码》后做的笔记,希望大家多多支持!
目录
前言
在开发程序的过程中总会需要获取当前活动的Context,而每次调用的时候传入Context又比较麻烦,那有什么简单的办法呢?这就是我们接下来要讲解的。
使用方法:
1.首先创建一个MyApplication类:
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
/**
*重写了父类的onCreate() 方法,并通过调用getApplicationContext() 方法得到了一个应用程序级别的
*Context,然后又提供了一个静态的getContext() 方法,在这里将刚才获取到的Context进行返回。
**/
public static Context getContext() {
return context;
}
}
2.在AndroidMainfest.xml中进行指定,告知系统在程序刚开始的时候就初始化MyApplication类
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.networktest"
android:versionCode="1"
android:versionName="1.0" >
...
<application
android:name="com.example.networktest.MyApplication"
...>
...
</application>
</manifest>
原理:
Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。而我们可以定制一个自己的Application 类,以便于管理程序内一些全局的状态信息,比如说全局Context。
使用范例:
1.创建一个工具类,在工具类中调用MyApplication.getContext()
public class ToastTool {
public Context context;
public static void makeToast(String message){
Toast.makeText(MyApplication.getContext(),message,Toast.LENGTH_SHORT).show();
}
}
2.之后在活动之直接调用以下语句就可以:
ToastTool.makeToast("不错嘛");
3.结果:
注意:之前在学习LitePal的时候也是指定为android:name="com.example.networktest.LitePalApplication ",那要怎么避免这两者冲突呢?
其实很简单,只要在我们自己的Application中去调用LitePal的初始化方法就可以了
public class MyApplication extends Application { private static Context context; @Override public void onCreate() { context = getApplicationContext(); LitePal.initialize(context); } public static Context getContext() { return context; } }
本篇博客就到这里结束啦,以后也要继续努力!加油!