环境:Android 10.0(29)
最近在学习Replugin插件化开发,发现初始化都是在Application中调用的,所以顺便学习一下application的相关知识
1、相关方法
onCreate() :创建时候调用
attachBaseContext(Context base):继承自ContextWrapper,设置最基础的上下文context
onTerminate() :应用被彻底关闭会调用,用模拟器测试时候,没发现有回调
onConfigurationChanged(@NonNull Configuration newConfig):配置更改时候调用
onLowMemory():系统内存低时候,会通知,让释放资源
onTrimMemory(int level) :通知释放内存,实际测试时候,应用关闭会调用这个方法,所以可以在这里释放资源
2、生命周期
应用第一次打开时候:
操作:点击打开应用,按返回键退出应用
第二次打开应用(未彻底关闭)
只会在关闭时候调用onTrimMemory()方法,之前的onCreate()和attachBaseContext()不会调用
多次打开应用(均未彻底关闭app)
都是只会调用onTrimMemory()方法
彻底关闭应用,重新打开
又会和第一次打开时候一样的生命周期
总结:第三方库基本都是在onCreate()方法中进行初始化;如果要释放资源最好在onTrimMemory()方法中进行,因为onTerminal()一直未调用;但是第三方库释放资源需要注意,因为onCreate()第二次打开不会继续执行,这时候就需要检测是否已经初始化,否则会出现未初始化崩溃现象.
参考:https://blog.youkuaiyun.com/weixin_34126215/article/details/85998526