activity的生命周期

activity在其生命周期中的4种状态

1   运行状态

     该activity处于与用户交互状态,位于回收栈的顶部。

2   暂停状态

     该activity对用户是可见的。但是不可操作,不在处于栈的顶部。

3   停止状态

      该activity对用户是不可见的。系统会保存这种activity的状态和成员变量,但当其他地方需要内存时,处于停止状态的活动会被系统回收。

4   销毁状态

     该activity被从返回栈中移除。


activity的生存期


                                                                                 

1    onCreate()

      在activity第一次被创建的时候调用

2   onStart()

     在activity由不可见变为可见的时候调用

3   onResume()

     在activity准备好和用户进行交互的时候调用,此时的activity位于栈顶。

4   onPause()

     在activity由可见变为不可操作时调用,即系统准备去启动或恢复另一个活动的时候调用。一些需要保存的数据写在该方法中。

5  onStop()

    在activity变为完全不可见的时候调用。 它和onPause()的主要区别:如果新启动的活动是对话框,则只执行onPause()方法,不执行onStop()

6  onDestroy()

    在activity被销毁的时候调用,从栈中移除

7   onRestart()

     在activity由停止变为运行状态之前调用。onRestart()---->onStart()

上面的方法中除了onRestart()方法,其他都是两两相互对应   可分为3种生存期

1   完整生存期

    onCreat()----> ..........----->onDestroy()

2    可见生存期

      onStart()----> .........----->onStop()

3   前台生存期

     onResume()---->onPause()


注意: 当activity A处于onPause()或onStop()状态时,系统内存不足,将活动A回收掉,然后用户按返回键回到A时,会执行A的onCreate()方法。当A被系统回收掉时,A中的暂存的数据也会丢失,那么如何保存这些数据呢??

            Activity提供了一个onSaveInstanceState()方法,这个方法在活动被回收之前调用,可以将临时数据放到这里面。   

 @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        String tempData = "data";
        outState.putString("data_key", tempData);
    }
Bundle提供了一系列用于保存数据的方法,putString()方法保存字符串,putInt()保存整形数据 等等。

如何恢复数据呢?

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState != null){
            String tempData = savedInstanceState.getString("data_key");
        }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值