Android系列 主要内容Activities 之 activity生命周期
2011-10-09 11:16
417 查看
Implementing the lifecycle callbacks(实现activity生命周期的调用)
说明:
>整个生命周期
从onCreate()到onDestroy () 是activity的整个生命周期。
一个应用应该在onCreate()中完成全局化配置,比如定义layout
一个应用应该在onDestroy()中释放所有维护的资源。
例子, 如果一个应用在后台运营,目的是要冲网络下载数据,那么它应该在onCreate时被创建并且在onDestroy时被停止。
>可见的生命周期
从onStart()到onStop()。
这个周期中用户可以从屏幕上看到应用并且和它交互。
在整个生命周期中你可以多次调用 onStart() 和 onStop(),实现对用的显示和隐藏。
>前端生命周期
从onResume() 到 onPause()。
在这个周期中,activity在屏幕前端并且拥有用户焦点。
例子:当设备进入休眠或者出现一个对话的时候,onPause被调用。
这部分code处理的事物应该相对简单,这样避免用户长时间等待。
Savingactivity state(保存活动状态)
简单的说,当一个activity 被暂停或者被停止的时候,那么这个activity的状态就被保留了。
这是因为 activity对象仍然被保留在内存中。
这里要注意的是,如果系统为了回收内存而destroy一个 activity的话,activity对象的信息将不会被保留。因此,应该保证这个activity在系统重新创建它之前,可以回调一个方法来保存重要信息。
这个回调方法(callback method)是 onSaveInstanceState().
过程是:
系统在这个activity被destroy之前调用onSaveInstanceState() 并且把这个activity传给Bundle对象。Bundle是用来保存状态信息的地方,使用的方法是名 值对应,如putSting()。
如果系统杀死了这个activity的进程并且用户又回来浏览这个activity,系统就将Bundle传给onCreate(),这样你可以重新存储这个activity的状态。
如果没有状态信息保存,那个Bundle就传null给onCreate().
注意:
onSaveInstanceState()是在activity被destroy之前被调用;
onSaveInstanceState()是在onStop()之前被调用;
onSaveInstanceState()也可能在onPause()之前被调用;
即使你不实现onSaveInstanceState()方法,activity也会默认实现它。而且,每个view都会将onSaveInstanceState()方法作为默认实现。几乎说有的widget也都实现这个方法。
例如,CheckBox 保存它是否被勾选的状态。
我们要做的就是提供出widget的唯一标识ID(通过android:id属性),如果widget没有ID,那么它的状态也不能被保存。
注意:
因为无法保证onSaveInstanceState()方法一定会被调用,
不要使用onSaveInstanceState()保存永久数据;
永久数据保存应该放到onPause()中进行。
Handing configuration changes(处理配置变化)
当设备的配置发生变化时(比如,屏幕朝向,键盘功能或者 语言),Android重新启动运行的activity(顺序是onDestroy(),然后紧接着调用onCreate())。通过重启来帮助应用程序适应新的配置。
应对配置变化的最好方法是,使用onSaveInstanState() 和 onRestoreInstanceState()(或者onCreate())。
Coordinating activities(相互协作的activities的生命周期)
当一个activity A 启动另一个activity B时,它们的生命周期顺序如下,
1.A 的onPause()执行
2.B的onCreate(),onStart()和 onResume()方法按顺序执行,这之后,B将获得用户焦点。
3.现在 如果A不再出现在屏幕,那么A的onStop()方法执行。
注意:
如果A一定要把数据写入DB之后,B才能读到这些数据的时候,A需要在onPause()而不是onStop()中实现DB的写入。
说明:
>整个生命周期
从onCreate()到onDestroy () 是activity的整个生命周期。
一个应用应该在onCreate()中完成全局化配置,比如定义layout
一个应用应该在onDestroy()中释放所有维护的资源。
例子, 如果一个应用在后台运营,目的是要冲网络下载数据,那么它应该在onCreate时被创建并且在onDestroy时被停止。
>可见的生命周期
从onStart()到onStop()。
这个周期中用户可以从屏幕上看到应用并且和它交互。
在整个生命周期中你可以多次调用 onStart() 和 onStop(),实现对用的显示和隐藏。
>前端生命周期
从onResume() 到 onPause()。
在这个周期中,activity在屏幕前端并且拥有用户焦点。
例子:当设备进入休眠或者出现一个对话的时候,onPause被调用。
这部分code处理的事物应该相对简单,这样避免用户长时间等待。
Savingactivity state(保存活动状态)
简单的说,当一个activity 被暂停或者被停止的时候,那么这个activity的状态就被保留了。
这是因为 activity对象仍然被保留在内存中。
这里要注意的是,如果系统为了回收内存而destroy一个 activity的话,activity对象的信息将不会被保留。因此,应该保证这个activity在系统重新创建它之前,可以回调一个方法来保存重要信息。
这个回调方法(callback method)是 onSaveInstanceState().
过程是:
系统在这个activity被destroy之前调用onSaveInstanceState() 并且把这个activity传给Bundle对象。Bundle是用来保存状态信息的地方,使用的方法是名 值对应,如putSting()。
如果系统杀死了这个activity的进程并且用户又回来浏览这个activity,系统就将Bundle传给onCreate(),这样你可以重新存储这个activity的状态。
如果没有状态信息保存,那个Bundle就传null给onCreate().
注意:
onSaveInstanceState()是在activity被destroy之前被调用;
onSaveInstanceState()是在onStop()之前被调用;
onSaveInstanceState()也可能在onPause()之前被调用;
即使你不实现onSaveInstanceState()方法,activity也会默认实现它。而且,每个view都会将onSaveInstanceState()方法作为默认实现。几乎说有的widget也都实现这个方法。
例如,CheckBox 保存它是否被勾选的状态。
我们要做的就是提供出widget的唯一标识ID(通过android:id属性),如果widget没有ID,那么它的状态也不能被保存。
注意:
因为无法保证onSaveInstanceState()方法一定会被调用,
不要使用onSaveInstanceState()保存永久数据;
永久数据保存应该放到onPause()中进行。
Handing configuration changes(处理配置变化)
当设备的配置发生变化时(比如,屏幕朝向,键盘功能或者 语言),Android重新启动运行的activity(顺序是onDestroy(),然后紧接着调用onCreate())。通过重启来帮助应用程序适应新的配置。
应对配置变化的最好方法是,使用onSaveInstanState() 和 onRestoreInstanceState()(或者onCreate())。
Coordinating activities(相互协作的activities的生命周期)
当一个activity A 启动另一个activity B时,它们的生命周期顺序如下,
1.A 的onPause()执行
2.B的onCreate(),onStart()和 onResume()方法按顺序执行,这之后,B将获得用户焦点。
3.现在 如果A不再出现在屏幕,那么A的onStop()方法执行。
注意:
如果A一定要把数据写入DB之后,B才能读到这些数据的时候,A需要在onPause()而不是onStop()中实现DB的写入。
相关文章推荐
- Google Android开发者文档系列-创建有内容分享特性的应用之获取文件信息
- Android Content Provider Tutorial--安卓内容提供者系列3--操作安卓联系人
- Android应用开发提高系列(6)——Activity生命周期
- android典型代码系列(十二)------删除某个文件夹里面的所有内容(递归)
- React系列——React主要内容简介
- Android总结篇系列:Activity生命周期
- 【完美解决系列】Android在自定义Dialog中TextView内容显示不全的问题
- Android总结篇系列:Activity中几个主要函数详解
- Google Android开发者文档系列-创建有内容分享特性的应用之添加一个简单的共享action
- Android Content Provider Tutorial--安卓内容提供者系列4--如何创建内容提供者
- Android Content Provider Tutorial--安卓内容提供者系列5--Loader用法
- 基于Windows的设备管理开发(主要阐述SetupDi系列函数及其相关内容)
- Android 系列 4.5从子活动检索数据返回主要活动
- Android组件系列----ContentProvider内容提供者【1】
- Android 组件系列(1):自动完成输入内容的组件(AutoCompleteTextView )
- Android应用开发提高系列——Activity生命周期
- Android 系列 4.1使用Intent打开网页,电话号码或任何其他内容
- Android组件系列----ContentProvider内容提供者
- Google Android开发者文档系列-创建有内容分享特性的应用之文件共享(序言)
- Android中导致小米系列手机直接崩溃的主要原因。