Android中活动的生命周期

      Android会运行应用并启动一个活动,它会考虑设备的配置。这是指物理设备的配置(如屏幕大小、屏幕方向、以及是否有一个关联的键盘),另外还会考虑用户指定的配置选项(如本地环境)

Android启动活动时需要知道设备配置是什么,因为这可能会影响应用所需要的资源

活动从生到死:

        

在android中如何去处理配置变化?

有两种做法:1.可以告诉Android不要从新启动活动。2.可以保存活动的当前状态,这样活动就能自行重新创建并恢复到原来的状态

  1. 避开重建活动

这通常不是最好的选择,因为Android重建活动时它会针对新配置使用最合适资源。如果避开重建,你可能就必须编写大量额外代码来自行处理新的配置。

要告诉Adroid不要因为配置改变而重新创建活动,可以为AndroidMainifest.xml文件的activity元素增加一行代码,如下所示:

Android:configChanges=configuration_change

这里的configuration_change是配置改变的类型

例如:希望Android不要考虑屏幕方向和屏幕大小的变化

     Android:configChanges=orientation|screenSize

如果Android发生如上变化,它会发出一个onConfigurationChanged(Configuration)方法而不是去创建一个活动

Public void onConfigurationChanged(Configuration config){    }

2.保存当前状态:

需要保存当前状态需要实现onSaveInstanceState( )方法。在活动撤销之前调用

Public void onsaveInstancestate(Bundle saveInstancestate){

}

可以使用Bundle的方法bundle.put*[类型名](name,value)将名/值对增加到Bundle

@Override
protected void onSaveInstanceState(Bundle saveInstanceState) {
    super.onSaveInstanceState(saveInstanceState);
    saveInstanceState.putInt("second", seconds);
    saveInstanceState.putBoolean("running", running);
}

public final class Bundle extends BaseBundle implements Cloneable, Parcelable {.....}

然后在onCreate()中恢复状态

如果这个活动是从头创建的,这个Bundle参数就是null值,如果是重新创建的,可以使用Bundle类提供的get*[类型]

(name);

活动的周期不是只有创建和撤销

还有onStart()、onStop()、onRestart(),这几个方法多是活动继承至Activity类里面的。

活动在用户可见时调用onStart()方法,在用户不可见时就调用onStop()方法,这可能是活动被另一个活动覆盖了,或者是这活动被撤销了,在活动撤销前会调用onStop()方法,在调用onStop()方法前还会调用onSaveInstancestate()方法,来保存数据,如果活动不见了将他重置为可见之前,会调用onRestart()方法

如果覆盖一个android生命周期的方法(如onStop()方法),有一点很重要首先要使用

Super.方法名(.)

如果一个活动失去焦点,但在用户还是可见的那么活动就处于暂停状态,这时活动任然存在,并且会维护当前的所有状态。  onPause()方法与onResume方法能够用来处理活动的暂停与启动,在活动失去焦点并且可见的时候就会调用onPause()方法,在活动恢复焦点之前就会调用onResume()方法。

以下这张图是指活动生命周期

的前台生命期

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值