Android——Application
Application
Application是Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期。
生命周期
// App启动时调用@Overridepublic void onCreate() {super.onCreate();}// App终止时调用(不一定),在应用开发中没什么意义@Overridepublic void onTerminate() {super.onTerminate();Log.d(TAG, "onTerminate");}// 配置改变时调用,例如:从竖屏变为横屏@Overridepublic 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启动时调用@Overridepublic 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");
案例代码