笔记一:安卓生命周期
来源:互联网 发布:中文域名 英文域名 编辑:程序博客网 时间:2024/05/20 13:39
一、生命周期图
1、当一个activity启动时,会执行onCreate→onStart→onResume
2、当按下返回键时,会执行onPause→onStop→onDestory
3、当按下Home键,有电话呼入挡住当前的activity会执行onPause→onStop,然后界面可见时执行onRestart→onStart→onResume
4、当打开一个透明的activity,将执行onPause→onResume
5、当程序在后台运行,或者不可与用户进行交互,这时当系统内存不足时,优先级比较高的应用需要内存,就会杀死改活动,重新打开会执行onCreate→onStart→onResume
二、activity异常被销毁执行过程
1、activity在异常情况下被销毁会执行onSaveInstanceState用来保存数据,这个方法调用在onStop之前,可能在onPause之前也可能之后,当activity重新创建后,系统会调用OnRestoreInstanceState,将onSaveInstanceState保存的bundle对象作为参数传给onCreate和OnRestoreInstanceState,onCreate和OnRestoreInstanceState进行判断activity是否被创建,并取出数据,OnRestoreInstanceState方法调用在onStart之前
2、下面看一个例子
布局只有一个EditText,查看当屏幕旋转activity方法执行的情况
public class MainActivity extends Activity {
private TextView content;
private String text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
content = (TextView) findViewById(R.id.edContent);
if (savedInstanceState!=null) {
String s = savedInstanceState.getString("save");
content.setText(s);
System.out.println("s:"+s);
}
System.out.println("onCreate");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
System.out.println("onRestoreInstaceState");
String s = savedInstanceState.getString("save", "hi");
content.setText(s);
}
@Override
protected void onStart() {
super.onStart();
System.out.println("onStart");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("onResume");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("onPause");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("onStop");
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
text = content.getText().toString();
outState.putString("save", text);
System.out.println("onSaveInstanceState");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("onDestory");
}
}
ctrl+f11结果如下:
当按home键
按返回键
从以上可以得出结论:只有在异常销毁时才会调用onRestoreInstanceState,例如屏幕旋转,被强迫杀死。
三、activity的优先级
3、当系统配置发生变化时activity就会被重新创建,要避免这种情况需要在清单文件中配置configChanges
例如: android:configChanges="keyboardHidden|orientation|locale|screenSize"
当屏幕再次旋转时就不会重新创建activity会调用onConfigurationChanged方法
这时ctrl+f11结果如下:
- 笔记一:安卓生命周期
- 【安卓笔记】activity生命周期
- 安卓基础:Activity(一)生命周期
- 安卓笔记(一)
- 安卓学习笔记之activity生命周期
- 安卓学习(一) 安卓组件与Activity生命周期
- 安卓学习笔记一
- 安卓开发笔记一
- 安卓学习笔记一
- 安卓随手笔记 一
- 安卓的学习之路【一】Android 生命周期
- andriod学习笔记——安卓应用程序生命周期
- 安卓菜鸟笔记二:Activity的生命周期
- 安卓-生命周期简述
- 安卓生命周期
- 安卓的生命周期?
- 安卓activity生命周期
- 安卓的生命周期
- 续在自己电脑上安装linux虚拟机,并安装apache2+php5.6+mysql5环境安装好后把项目部署上去
- C# 关于获取数据库中money类型的数据
- JAVA.Study.Note.JAVA中this.<***>的含义
- JVM(十三) 类的卸载
- 1、如何恢复被删除表数据
- 笔记一:安卓生命周期
- GalaxyOJ-558 (DP)
- Camera API2.0 时序图
- java实现发送邮件功能
- react naive 安卓返回键的封装
- Spatial Transformer Networks(空间变换神经网络)
- 本地化测试的执行
- android学习资料与资源记录
- Meterpreter Guide