参考郭霖第二行代码
一个APP运行都是一个application,在这个application中分不同的activity等
看清单文件也能看出1
2
3
4
5
6
7
8
9
10
<manifest>
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<activity android:name=".MainActivity">
...
</activity>
</application>
</manifest>
- 整个清单文件先包括application,然后是里面的activity和server
- 程序启动时候会初始化一个application,当整个程序停止运行了此application才会释放
- 可以自己写一个application然后放一些全局的信息,如context
全局获取Context
- 首先重写一个application
1
2
3
4
5
6
7
8
9
10
11public class MyApplication extends Application {
private static Context context;
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext(){
return context;
}
}
- 提供一个静态的context,重写oncreate方法,调用getApplicationContext获取全局context,这样调用MyApplication.getContext即可获取到context
- 在清单文件中把默认的application换成MyApplication
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<application
android:name="cn.xwmdream.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
- 在application中加上了一个Android:name的属性,指定了MyApplication
- 这样在任何一个地方调用MyApplication.getContext()方法即可获取到context
通过application通信
可以在自定义的application提供以下方法来传递数据1
2
3
4
5
6
7private static String data;
public static void setData(String d){
data = d;
}
public static String getData(){
return data;
}
- 在不同的地方中通过set和get传递数据