activity的生命周期
来源:互联网 发布:北沉香手串 淘宝 编辑:程序博客网 时间:2024/06/06 00:04
activity在其生命周期中的4种状态
1 运行状态
该activity处于与用户交互状态,位于回收栈的顶部。
2 暂停状态
该activity对用户是可见的。但是不可操作,不在处于栈的顶部。
3 停止状态
该activity对用户是不可见的。系统会保存这种activity的状态和成员变量,但当其他地方需要内存时,处于停止状态的活动会被系统回收。
4 销毁状态
该activity被从返回栈中移除。
activity的生存期
1 onCreate()
在activity第一次被创建的时候调用
2 onStart()
在activity由不可见变为可见的时候调用
3 onResume()
在activity准备好和用户进行交互的时候调用,此时的activity位于栈顶。
4 onPause()
在activity由可见变为不可操作时调用,即系统准备去启动或恢复另一个活动的时候调用。一些需要保存的数据写在该方法中。
5 onStop()
在activity变为完全不可见的时候调用。 它和onPause()的主要区别:如果新启动的活动是对话框,则只执行onPause()方法,不执行onStop()
6 onDestroy()
在activity被销毁的时候调用,从栈中移除
7 onRestart()
在activity由停止变为运行状态之前调用。onRestart()---->onStart()
上面的方法中除了onRestart()方法,其他都是两两相互对应 可分为3种生存期
1 完整生存期
onCreat()----> ..........----->onDestroy()
2 可见生存期
onStart()----> .........----->onStop()
3 前台生存期
onResume()---->onPause()
注意: 当activity A处于onPause()或onStop()状态时,系统内存不足,将活动A回收掉,然后用户按返回键回到A时,会执行A的onCreate()方法。当A被系统回收掉时,A中的暂存的数据也会丢失,那么如何保存这些数据呢??
Activity提供了一个onSaveInstanceState()方法,这个方法在活动被回收之前调用,可以将临时数据放到这里面。
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); String tempData = "data"; outState.putString("data_key", tempData); }Bundle提供了一系列用于保存数据的方法,putString()方法保存字符串,putInt()保存整形数据 等等。
如何恢复数据呢?
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(savedInstanceState != null){ String tempData = savedInstanceState.getString("data_key"); }}
- 什么是Activity?Activity的生命周期!
- Activity及Activity的生命周期
- Activity 的生命周期
- Android activity的生命周期
- Activity的生命周期
- Android:Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Android Activity的生命周期
- Android Activity的生命周期
- Activity的生命周期一
- Android Activity的生命周期
- Activity的生命周期
- Android activity的生命周期
- 个人保存 sublime3相关
- 欧拉计划第3题
- 多线程经典问题 -- 生产问题
- Android Studio 如何关联源码(关联你想要的任何版本的源码)
- SlidingTabLayout的使用--替代ActionBar的Tab导航
- activity的生命周期
- 一步一步切入js插件开发
- Layer2-网关冗余技术HSRP、VRRP、GLBP
- qt#2 多个实例信号版定一个槽函数如何识别信号源
- Android 中protobuf 的安装,编译和使用
- Lighttpd 交叉编译
- 【bzoj3316】【JC loves MKK】【单调队列+二分答案】
- 小心使用STL中map的[]操作符
- JS的垃圾回收机制和内存分配