android active 生命周期备忘
来源:互联网 发布:音乐相册编辑软件 编辑:程序博客网 时间:2024/05/22 15:18
一个Activity有三种状态:
- 激活或者运行状态,运行在前台(在当前Activity栈的栈顶)。
- 暂停状态,失去了焦点但是仍然对用户可见,比如有其他的Activity在它之上,或者透明或者没有遮住整个屏幕。
- 停止状态,被其他Activity覆盖,需要注意的是包括暂停状态在内,这两种状态都仍然保存了所有状态信息,直到被系统终止。
Activity状态间的转换,都会被以下Protected方法监听到:
2
3
4
5
6
7
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
以上的方法都是钩子,可以通过复写他们来做适当的工作。onCreate()是必须被实现的,来初始化Activity的状态。一般都会在onPause()里来提交数据的改变以准备中止和用户的交互。
注意:所有这些Activity的生命周期方法的实现都应该先调用其父类的方法。比如:
2
3
4
}
这7个方法描述了Activity的整个生命周期,其中包含了三个部分:
- 整个周期 从onCreate()开始直到onDestroy()结束。在onCreate()里初始化Activity的状态,在onDestroy()里释放所有资源。
- 可见周期 从onStart()开始到onStop()结束。在这段时间里,用户可以在屏幕上看见Activity,但并不一定在前台和用户进行交互。可以通过反复调用这两个方法来实现界面的显示和隐藏,也就是说可以在onStart()里注册一些BroadcastReceiver来监听用户的操作,在onStop()里注销这些监听事件,因为用户已经无法看见操作界面。
- 前台周期 从onResume()开始到onPause()结束。这段时间,Activity处在最前端和用户进行交互。在这两个方法里,处理都应该尽量的轻量级,因为它们可能会被无数次的调用,比如手机进入睡眠模式就会触发onPause()。
保存Activity状态 想在Activity被中止之前保存状态,必须实现一个方法onSaveInstanceState(),Android会在调用onPause()之前调用它。需要把状态保存在一个键值对对象Bundle中,当Activity再次被激活时,这个对象会被传给onCreate()以及稍后的另一个方法onRestoreInstanceState()以恢复状态。
Note: onSaveInstanceState() 和onRestoreInstanceState()并不是生命周期方法,意味着它们并不一定会被触发。比如当系统销毁一个Activity时,onSaveInstanceState()会被调用,但是当用户去操作销毁一个Activity时(比如用户点击Back),onSaveInstanceState()就不会被调用。在这种场合,用户的行为决定了状态不需要被保存。因为onSaveInstanceState()不会经常被调用,所以只应该用它来保存一些临时的状态,而在onPause()里做数据的持久化操作。
http://blog.sina.com.cn/s/blog_63c87a220100hfub.html
http://www.cnblogs.com/hibraincol/archive/2012/03/06/2382120.html
- android active 生命周期备忘
- android apk --- Active的生命周期
- android activity生命周期(自我备忘)
- Android Activity生命周期以及onSaveInstanceState、onRestoreInstanceState要点备忘
- Android Activity生命周期以及onSaveInstanceState、onRestoreInstanceState要点备忘
- winform生命周期(备忘)
- Fragment生命周期备忘
- 应用程序生命周期的备忘
- Activity生命周期方法-自己备忘
- android备忘
- android备忘
- android生命周期
- android生命周期
- Android生命周期
- android生命周期
- Android 生命周期
- android 生命周期
- Android生命周期
- ImageView中XML属性src和background的区别
- android应用框架
- #define和typedef的区别
- 约瑟夫环一个例子
- ios常用正则表达式
- android active 生命周期备忘
- tomcat 三种连接模式
- 移动开发者必须了解的10大跨平台工具
- 吃着并健康
- C\C++代码优化的27个建议
- SQL语言基础练习---数据库server 2008(三)
- ios多线程的几种创建方式
- 谈一谈C++抽象类
- Cacti使用安装详解