活动的生命周期

1.返回栈

活动是通过任务来管理的,一个任务就是一组存放在栈里的活动的集合,这个栈被叫作返回栈。
返回栈工作流程

2.活动的状态

每个活动在其生命周期中最多可能会有4种状态。

  • 运行状态
    当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。
  • 暂停状态
    当一个活动不再处于栈顶,但是仍然可见时(并不是所有活动都会占满整个屏幕的),活动就进入了暂停状态。处于暂停状态的活动仍然是完全活着的,只有内存极低的情况下,系统才会考虑回收这种活动。
  • 停止状态
    当活动不再处于栈顶并且完全不可见的时候就进入停止状态。系统仍然会为这种活动保存相应的状态和成员变量,但是当其他地方需要内存时,处于停止状态的活动是又可能被系统回收的。
  • 销毁状态
    当活动从返回栈中移除后就变成了销毁状态。系统最倾向于回收处于这种状态的活动,来保证手机的内存充足。

3.活动的生存期

Acitivity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节。

  • onCreate() 在活动第一次被创建时调用。通常在这个方法中完成活动的初始化操作。
  • onStart() 在活动由不可见变为可见时调用。
  • onResume() 在活动准备好用户进行交互时调用。此时活动一定处于返回栈的栈顶而且是运行状态。
  • onPause() 在系统准备去启动或者恢复另一个活动时调用。通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据。
  • onStop() 在活动完全不可见的时候调用。和onPause()的区别在于,如果启动的新活动是一个对话框的活动时,执行的是onPause()而不是onSyop()
  • onDestory() 把活动状态变为销毁状态。
  • onRestart() 把活动重新启动,在活动由停止状态变为运行状态之前调用。

以上除了onRestart()外都是两两相对的,从而又可以将活动分为3种生存期:

  • 完整生存期。活动在onCreate()和onDestory()之间所经历的,就是完整生存期。
  • 可见生存期。活动在onStart()和onStop()之间所经历的就是可见生存期。在可见生存期里,活动对于用户总是可见的,即使有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源。
  • 前台生存期。活动在onResume()和onPause之间经历的就是前台生存期。在前台生存期里,活动总是处于运行状态的,此时活动是可以和用户进行交互的。

活动生命周期

4.活动被回收时临时数据的保存方法

Activity中提供了一个onSaveInstanceState()的回调方法,可以保证在活动被回收前一定会被调用,因此可以用于解决活动被回收时临时数据得不到保存的问题。onSaveInstanceState()方法携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据。

	@Override
    protected void onSaveInstanceState(Bundle outState){
        super.onSaveInstanceState(outState);
        //想要存放的临时数据
        String tempData = "Something you just typed";
        outState.putString("data_key",tempData);
    }
利用onCreate中也有Bundle类型的参数,把数据取出来
	if (savedInstanceState != null) {
		String tempData = savedInstanceState.getString("data_key");
		Log.d(TAG, tempData);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值