Android——Application
Application
Application是Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期。
生命周期
// App启动时调用
@Override
public void onCreate() {
super.onCreate();
}
// App终止时调用(不一定),在应用开发中没什么意义
@Override
public void onTerminate() {
super.onTerminate();
Log.d(TAG, "onTerminate");
}
// 配置改变时调用,例如:从竖屏变为横屏
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.d(TAG, "onConfigurationChanged");
}
Application操作全局变量
适合在Application中保存的全局变量主要有下面3类数据:
- 会频繁读取的信息,如用户名、手机号等。
- 不方便由意图传递的数据,例如位图对象、非字符串类型的集合对象等。
- 容易频繁分配内存而导致内存泄漏的对象,如Handler对象等。
public class MyApplication extends Application {
private static MyApplication mApp;
public HashMap<String, String> infoMap = new HashMap<>();
public static MyApplication getInstance() {
return mApp;
}
// App启动时调用
@Override
public void onCreate() {
super.onCreate();
mApp = this;
Log.d(TAG, "onCreate");
}
}
mApp = MyApplication.getInstance();
mApp.infoMap.put("name", nameInput.getText().toString());
String name = mApp.infoMap.get("name");
案例代码