Activity生命周期和启动模式
来源:互联网 发布:windows 10不能玩魔兽 编辑:程序博客网 时间:2024/06/05 10:10
activity和用户之间的关系最密切,在学习android的过程中,刚开始并不晓得生命周期的意义和用途,随着学习的深入,和自己做APP的体会,深刻理解activity的生命周期对我们编写android程序很重要。所以有必要总结提炼以加深印象和理解。
activity: onCreate(); 进行全局初始化, onStart(); 用户可见但是并不能交互 onResume(); 和用户交互 onPause(); 此activity需暂停,不可交互。一般在这个方法里,我们用于保留未保存的修改, 停止可能会消耗处理器资源的动画等。如果之后此activity重新和用户交互, 而且并没有被系统收回,就会调用onResume()方法。 onStop(); activity已经不可见,被其他的activity覆盖了。 如果覆盖此activity的activity推出了,那么此activity重新展示, 就会调用activity的onRestart()方法, 然后再调用onStart()方法进入前台, 再调用onResume()方法与用户交互。 onDestory(); 此activity已经被销毁。 有可能是代码中调用了finish()方法将此销毁, 也有可能是系统资源不足,将其所占资源收回了。
在后台运行的activity很有可能被系统收回,那在activity中的状态该如何办呢?在android编程中我们会经常用到intent中放入数据进行跨activity传递,其中的Bundle类型,大家应该很清楚,而在activity的onCreate()方法中也有一个Bundle类型的参数savedInstanceState,那这个参数是怎么来的呢?就是因为activity在后台运行的时候很可能被系统收回,所以系统提供的给我们保存数据的机会,在activity容易被销毁时,也就是在后台时系统就会调用onSaveInstanceState()方法来保存状态。
onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。
介绍一下onSaveInstanceState(Bundle outState) 方法
outState 参数作用 :1、 数据保存 : Activity 声明周期结束的时候, 需要保存 Activity 状态的时候, 会将要保存的数据使用*键值对*的形式 保存在 Bundle对象中;2、 恢复数据 : 在 Activity 的 onCreate()方法 创建 Activity 的时候会传入一个 Bundle对象, 这个 Bundle 对象就是这个 outState 参数;调用时机 : Activity **容易**被销毁的时候调用 _activity失去焦点进入后台。 1、 按下Home键 : Activity 进入了后台, 此时会调用该方法; 2、 按下电源键 : 屏幕关闭, Activity 进入后台; 3、 启动其它 Activity : Activity 被压入了任务栈的栈底; 4、 横竖屏切换 : 会销毁当前 Activity 并重新创建;onSaveInstanceState方法调用注意事项 : 用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法;调用时机不固定 : 该方法一定是在 onStop() 方法之前调用, 但是不确定是在 onPause() 方法之前 还是 之后调用;布局中组件状态存储 : 每个组件都 实现了 onSaveInstance() 方法, 在调用函数的时候, 会自动保存组件的状态,**只有有 id 的组件才会保存**;关于默认的 super.onSaveInstanceState(outState) : 该默认的方法是实现 组件状态保存的;
在后台的activity被系统杀死之后,我们再次使用这个activity时,就会重新创建这个activity,就会调用onCreate()方法或者是onRestoreInstanceState()方法。
介绍一下 onRestoreInstanceState(Bundle savedInstanceState) 方法 方法回调时机 : 在 Activity 被系统销毁之后 **恢复 Activity 时被调用**。 Bundle 对象传递 : 该方法保存的 Bundle 对象在 Activity 恢复的时候 也会通过参数传递到 onCreate() 方法中; 位于生命周期的位置: 该方法在 onResume() 方法之前保存信息;
调用onRestoreInstanceState()方法,在onStart之后恢复状态,其实可以不用,因为之前就用onCreate()方法获取保存的参数进行状态恢复了。
activity的启动模式 :
Task 和 BackStack (任务栈)
1、standard
每次启动activity都会在任务栈中新建一个activity,按back键返回时,会逐一退出。
2、singleTop
此activity在栈顶的时候,再启动自己时,不会新建,会调用onNewIntent()方法。
3、singleTask
在任务栈中只存在一个activity,任何启动自己都是调用onNewIntent()方法。
4、singleInstance
此activity会创建自己的任务栈。
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和启动模式
- Activity生命周期和和启动模式
- Activity的生命周期和启动模式
- android 学习activity生命周期和启动模式
- Activity生命周期和启动模式整理
- android Activity生命周期和启动模式详解
- Activity的生命周期和启动模式总结
- 服务器TIME_WAIT和CLOSE_WAIT详解和解决办法
- C++:google style 强制类型转换
- Linux设备驱动之——I2C总线
- HDU 1106 排序(atoi函数和strtok函数)
- ZOJ1649Rescue
- Activity生命周期和启动模式
- java编译基础总结
- Mts视频丢失损坏的恢复修复
- Xcode6中怎么添加空工程模板
- 一位数相乘
- java基础知识(四)
- VC/MFC 定时器设置及OnTimer使用
- 冒泡排序
- git修改提交的用户名和Email