《一:生命周期函数》
1:函数调用:
1.1.onCreate: 界面新出现时被调用
1.2.onStart: 界面可见时被调用
1.3.onResume: 界面可见,并且能 获取焦点(操作)时被调用。
1.4.onRestart: 当一个已经不可见的页面,返回可见时,再start之前被调用
1.5.onPause: 界面可见,但无法 获取焦点(操作)时被调用
1.6.onStop: 界面不可见时被调用
1.7.onDestory: 界面被销毁时被调用
2:转换界面时调用函数顺序:
2.1.打开一个界面: onCreate->onStart->onResume 先创建,再可见,再可操作
2.2.关闭一个界面: onPause->onStop->onDestory 先暂停,再不可见,再销毁
2.3.打开一个不透明界面: onPause->onStop 先暂停,再不可见
2.4.返回不透明界面: onRestart->onStart->onResume 先restart(重新准备可见),再可见,再恢复可操作
2.5.打开一个透明的界面: onPause(因为原界面可见,故不再调用onStop)
2.6.从透明界面返回: onResume(因为原界面可见,故不用嗲用onStart)
3:生命周期类型:
3.1:整个生命周期
onCreate()-->onStart()-->onResume()-->运行在最前端-->onPause()-->onStop()-->onDestory()
3.2:可见生命周期
onPause()-->onStop()-->onRestart()-->onStart()-->onResume()
3.3:前台生命周期
onPause()-->onResume();
4:在AndroidManifest:
将界面配置成透明的
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
5.1:在Activity中配置(消除横竖屏,屏幕大小,键盘隐藏对Activity生命周期的影响):
<!-- 告诉系统忽略掉 【屏幕大小变化,横竖屏切换,键盘被隐藏】 的时候对Activity生命周期的影响 -->
android:configChanges="screenSize|orientation|keyboardHidden"
<!-- 横竖屏切换对Activity生命周期的影响,强制屏幕初始时为 横屏(landscape),竖屏(portrait) -->
android:screenOrientation="landscape"
5.2:横竖屏切换生命周期方法执行顺序:
onPause->onStop->onDestory->onCreate->onStart->onResume
6:Activity生命周期图:
《二:短信的草稿保存》
正常关闭退出Activity后,调用onDestotry(protected),刚打开调用onCreate.
6.1.在onDestory中:
//1.得到分享属性对象
SharedPreferences sp = getSharedPreferences("draft", MODE_PRIVATE);
//2.得到编辑器
Editor edit = sp.edit();
//3.将EditText中的值放进编辑器中
String people = mPeopleEt.getText().toString();
if(hasLength(people) ){
edit.putString("people", people);
}
//4.提交编辑器
edit.commit();
6.2.在onCreate中:
//1.得到分享属性对象
SharedPreferences sp = getSharedPreferences("draft", MODE_PRIVATE);
//2.得到分享属性中的键值对,若值默认返回为空字符串
String people = sp.getString("people", "");
//3.将值回显到Edit中
if(hasLength(people)){
mPeopleEt.setText(people);
}
《二:任务栈》
在AndroidManifest.xml中Activity的配置中:
android:launchMode="standard" :
默认的启动方式
android:launchMode="singleTop" :
当前栈顶若等于即将入栈的元素,则不允许入栈。
应用于手机卡屏重复点击避免打卡多个相同界面。
android:launchMode="singleTask":
当打开属性为singleTask的Activity时,先判断
Activity是否在栈内存在,不存在则创建;如果存在,
则要判断该Activity上面有其他的Activity,如果有,
则直接关闭其他的Activity.应用于应用的主页。
(从A界面一路打开界面,若在远方的某个界面要返回到A界面,则
直接返回到A界面并关闭沿途界面)
android:launchMode="singleinstance":
如果没有创建就创建一个容器把AC放进去,并把自己的容器提前。
如果AC存在,再次启动此AC,仅仅把自己的容器提前,
此时如果有新的AC被启动,其他的容器会提前,并在
提前的容器中添加该新的AC.