Android系列 主要内容Activities 之 activity生命周期

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的写入。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值