Activity四种启动模式下的生命周期

767 阅读1分钟

首先四种启动模式大家应该都比较熟悉了 standard singleTop singleTask singleInstance

首先两个activity: activity01 activity02  

简单的界面:

standard 下的模式比较简单就是正常的生命周期,这里就不再赘述了

Activity01的模式是standard:

1.Activity02的模式是singleTop:

01->02->02

      

复用的时候运行了onPause() onNewIntent()和onResume()函数。

2.Activity02的模式是singleTask:

01->02->02

和singleTop一样复用的时候运行了onPause() onNewIntent()和onResume()函数。

02>01>02

复用的时候运行了onNewIntent(),onStart(),onResume()

3.Activity02的模式是singleInstance:

02>01>02

复用的时候调用的是三个函数。onNewIntent(), onStart(), onResume()

综上所述,不管是singleTop singleTask singleInstance,

如果是相邻复用:onPause() onNewIntent()和onResume()

如果是相隔复用:onNewIntent(), onStart(), onResume()

4.特别注意:

actiity如果是通过getIntent初始化的数据, singleTop singleTask singleInstance 模式下复用,需要注意重写onNewIntent方法,在OnNewIntent中更新Intent, 如下:

/*
* 复用Activity时的生命周期回调
*/
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        initData();
        initView();
    }

 //初始化数据
    private void initData() {
        Intent intent = getIntent();
        mCourseID = intent.getStringExtra(COURSE_ID);
    }