目录
在Activity的.java文件中动态添加Fragment
Activity生命周期
生命周期方法 = 成对出现(配对)
onCreate() & onDestory()
onStart() & onStop()
onResume() & onPause()
onStart() & onStop()、onResume() & onPause() 除了回调时刻,在实际使用中无任何区别
onStart() & onStop() :从 Activity 是否完全可见的角度 进行回调
onResume() & onPause(): 从 Activity 是否位于前台(UI最顶层)的角度进行回调;
除了上述的区别,在实际使用中没有任何区别
当前Activity为A,此时用户打开ActivityB后,那么A的onPause()和B的onResume()哪个方法先执行?
先 A的onPause() ,再B的onResume()
Activity的启动过程:由ActivityManagerService(AMS)对栈内的Activity状态进行同步管理 & 规定:新Activity启动前,栈顶的Activity必须先onPause(),才能启动新的Activity(执行onResume())
注:为了让新的Activity尽快切换到前台,在 onPause()尽量不要做耗时 / 重量级操作
异常情况的生命周期
系统内存不足
资源相关的系统配置发生改变
Saving UI States(保存UI状态)
背景
如果系统由于系统约束(而不是正常的应用程序行为)而破坏了Activity,那么尽管实际 Activity实例已经消失,但是系统还是会记住它已经存在,这样如果用户导航回到它,系统会创建一个新的实例的Activity使用一组保存的数据来描述Activity在被销毁时的状态。系统用于恢复以前状态的已保存数据称为“实例状态”,是存储在Bundle对象中的键值对的集合。
解决
onSaveInstanceState()和onRestoreInstanceState()
注意
1、如果是用户自动按下返回键,或程序调用finish()退出程序,是不会触发onSaveInstanceState()和onRestoreInstanceState()的。
2、每次用户旋转屏幕时,您的Activity将被破坏并重新创建。当屏幕改变方向时,系统会破坏并重新创建前台Activity,因为屏幕配置已更改,您的Activity可能需要加载替代资源(例如布局)。即会执行onSaveInstanceState()和onRestoreInstanceState()的。
保存你的Activity状态
static final String STATE_SCORE = "playerScore";
static fi