当app启动时最先启动的是Application,每个APP运行时仅创建唯一一个Application,用于存储系统的一些信息。
Application中比较重要的方法:
1.onCreate:在创建应用程序时回调的方法
2.onTerminate:当终止应用程序对象时调用,不保证一定被调用
3.onLowMemory:当后台程序已经终止且资源缺乏时调用。当后台程序已经终止、前台应用还不够时的时的情况下,好的应用程序一般会在这个方法中释放一些不必要的资源来应对
4.onConfigurationChanged:配置改变时触发这个方法,如手机屏幕旋转等。
registerActivityLifecycleCallbacks:当App内的Activity的生命周期发生改变时就会调用。
registerActivityLifecycleCallbacks和unregisterActivityLifecycleCallbacks:用于注册或注销App内所有Activity的生命周期的监听。
======================================================================================
主模块和次模块都有一个Application时,可能会编译出错。
原因:gradle插件默认启用Maniifest Merger Tool,如果主模块和次模块的Application的配置中定义了相同属性(如android:icon和android:theme),则此时会合并失败。
编译合并存在四种情况:
1.主模块有Application,次模块没有自定义的Application,这时会自然引用主模块中的Application
2.主模块有自定义的Application,次模块没有,自动引入主模块的Application
3.次模块有自定义的Application,需要解决冲突,每个次模块的Application都需要添加上tools:replace字段
4..主模块有自定义的Application,次模块也有自定义的Application,在主模块的Application中添加上tools:replace解决冲突
P:添加tools:replace="android:icon,android:theme"(多个属性用“,”隔开),要在manifest的根标签上加入:"xmlns:tools="http://schemas.android.com/tools",否则找不到命域名。