Activity生命周期详解

网络上关于Activity的详解很多,当然最权威的莫过于Google官方解释http://developer.android.com/guide/components/activities.html 由于天朝早已将Google拒绝门外,所以要访问Google官网需自备梯子,这里给大家推荐红杏 http://honx.in/i/VHsfN4IaAxACnV4S通过此链接注册你我的账号都会增加10天的使用时长哦!在此推荐一下个人独立博客网站http://www.fengchaokm.com/欢迎大家指点。好了,先来一发官方图解:
Activity生命周期图解
从官方的图解可以看出,Activity从启动到销毁涉及的主要方法的执行顺序如下:
onCreate()–>onStart()–>onResume()–>onPause()–>onStop()–>onDestroy()
当然Activity生命周期涉及的方法不止这些,下面我们从实例讲解完整的Activity生命周期涉及的方法及过程。

public class MainActivity extends Activity {

    static final String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate--------");
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onContentChanged() {
        super.onContentChanged();
        Log.d(TAG, "onContentChanged--------");
    }

    public void onStart() {
        super.onStart();
        Log.d(TAG, "onStart--------");
    }

    public void onRestart() {
        super.onRestart();
        Log.d(TAG, "onRestart--------");
    }

    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        Log.d(TAG, "onPostCreate--------");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.d(TAG, "onResume--------");
    }

    public void onPostResume() {
        super.onPostResume();
        Log.d(TAG, "onPostResume--------");
    }

    public void onPause() {
        super.onPause();
        Log.d(TAG, "onPause--------");
    }

    public void onStop() {
        super.onStop();
        Log.d(TAG, "onStop--------");
    }

    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy--------");
    }

    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.d(TAG, "onConfigurationChanged--------");
    }

    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Log.d(TAG, "onSaveInstanceState--------");
    }

    public void onRestoreInstanceState(Bundle outState) {
        super.onRestoreInstanceState(outState);
        Log.d(TAG, "onRestoreInstanceState--------");
    }


}

启动Activity然后退出,相应的执行顺序如下图所示:
这里写图片描述
下面我们来解释一下Activity生命周期过程:

1、当第一次调用Activity时会执行onCreate()方法,然后当Activity处于可见状态时会执行onStart()方法,接着Activity得到用户焦点时会调用onResume()方法,此时进入run运行状态。

2、如果当前Activity被其他Activity覆盖或被锁屏则会调用onPause()方法,暂定当前Activity的执行;当Activity由被覆盖状态回到最前端或解锁屏则会调用onResume()方法,再次进入运行状态。

3、当前Activity跳转到新的Activity界面或按Home键回到主屏,Activity处于不可见状态则会调用onStop()方法,如果用户回退到此Activity则会先调用onRestart()方法,然后调用onStart()方法,最后调用onResume()方法再次进入运行状态。

4、当用户退出当前Activity时,系统先调用onPuse()方法,然后调用onStop()方法,最后调用onDestory()方法,销毁当前Activity。

5、onContentChanged()是Activity中的一个回调方法 当Activity的布局改动时,即setContentView()或者addContentView()方法执行完毕时就会调用该方法, 例如,Activity中各种View的findViewById()方法都可以放到该方法中。

6、onPause()是在整个窗口被半遮盖或者半透明的时候会执行,而onStop()则是在整个窗口被完全遮盖才会触发, 触发onStop()的方法之前必定会触发onPause()方法。

7、onPostCreate()方法是指onCreate()方法彻底执行完毕的回调,onPostResume()类似,关于这两个方法我也没深入了解,感兴趣的同学可以查找更详细的资料学习。

8、Activity在onPause或者onStop状态下都有可能遇到由于突发事件系统内存不足需要回收内存,之后的onDestroy方法便不会再执行。

横竖屏切换时候Activity的生命周期

1、不设置Activity的android:configChanges时,切换屏会重新调用各个生命周期,默认先销毁当前Activity,然后重新加载。
onPuse()–>onStop()–>onDestory()–>onCreate()–>onStart()–>onResume()

2、当设置Activity的android:configChanges=”orientation|keyboardHidden”时,切换屏不会重新调用各个生命周期,只会执行onConfigurationChanged()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值