Activity的生命周期的七个场景

作者: dayang | 来源:发表于2016-12-14 19:43 被阅读102次

简单介绍Activity生命周期经常调用的几个方法:

  • onCreate()与onDestroy()
    Activity的创建销毁,处于Activity的entire lifetime完整生命周期
  • onStart()与onStop()
    Activity的可见不可见,处于Activity的visible lifetime可见生命周期
  • onResume()与onPause()
    Activity的获取焦点与失去焦点,处于Activity的foreground time 前台生命周期
  • onSaveInstanceState()与onRestoreIntanceState()
    保存数据取出保存的数据,横竖屏切换的时候,两个方法会被同时调用,当然这只是这两个方法同时出现场景之一
  • onConfiguration()
    在Activity的Manifest文件下配置完configChanges属性,如果是横竖屏切换相关值,则在横竖屏切换时会被调用

下面用Activity的使用的七个场景来这些生命周期方法的执行顺序


一、Activity1首次启动

onCreate-->onStart-->onResume

控制台打印效果图
Activity首次启动生命周期调用顺序.png

二、Activity1按返回键并从手机缓存应用列表中启动

onResume-->onPause-->onStop-->onDestroy
再次启动:onCreate-->onStart-->onResume

控制台打印效果图
Activity从手机缓存启动.jpg

三、Activity1按住home键从手机缓存应用列表中再次启动

onResume-->onPause-->onSaveInstanceState-->onStop
再次启动:onRestart-->onStart-->onResume

控制台打印效果图
Home键再从手机缓存启动.jpg

四、Activity1锁屏关闭再开启

onResume-->onPause-->onSaveInstanceState-->onStop
再次启动:onRestart-->onStart-->onResume

控制台打印效果图
锁屏关闭.jpg

五、Activity1启动Activity2

Activity1:onResume-->onPause
Activity2:onCreate-->onStart-->onResume
Activity1:onSaveInstanceState-->onStop

控制台打印效果图
Activity1启动Activity2.jpg

六、Activity1启动Activity2,Activity2退出或者按返回键

Activity2:onResume-->onPause
Activity1:onRestart-->onStart-->onResume
Activity2:onStop-->onDestroy

控制台打印效果图
Activity2被关闭.jpg

七、Activity1横纵屏切换,并做相关配置

竖屏:onCreate-->onStart-->onResume-->onPause-->onSaveInstanceState
-->onStop-->onDestroy

横屏:onCreate-->onStart-->onRestoreInstanceState-->onResume

控制台打印效果图
横纵屏切换.jpg

配置Activity横竖切换不重新创建

android:configChanges="orientation|screenSize"
是在AndroidManifest.xml相应的<activity>标签的属性

控制台打印效果图
配置ActivityconfigChanges后生命周期.jpg
Activity1代码块
public class MainActivity extends AppCompatActivity {
   static String TAG="dayng";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState!=null){
            Log.i(TAG,"退出时保存的数据"+savedInstanceState.getString("dayang"));
        }
        Log.i(TAG,"-------MainActivity.onCreate--------");
    }
    public void onClick(View view){
        Intent intent=new Intent(this,Main2Activity.class);
        startActivity(intent);
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG,"-------MainActivity.onStart--------");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG,"-------MainActivity.onResume--------");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG,"-------MainActivity.onPause--------");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG,"-------MainActivity.onRestart--------");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG,"-------MainActivity.onStop--------");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG,"-------MainActivity.onDestroy--------");
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putString("dayang","-----7777777");
        super.onSaveInstanceState(outState);
        Log.i(TAG,"--------MainActivity.onSaveInstanceState--------");
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Log.i(TAG,"--------MainActivity.onRestoreInstanceState--------");
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(TAG,"--------MainActivity.onConfiguration--------");
    }
}
Activity2代码块
public class Main2Activity extends AppCompatActivity {
    static String TAG="dayang";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Log.i(TAG,"-------Main2Activity.onCreate-------");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG,"-------Main2Activity.onStart-------");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG,"-------Main2Activity.onResume-------");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG,"-------Main2Activity.onPause-------");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG,"-------Main2Activity.onStop-------");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG,"-------Main2Activity.onRestart-------");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG,"-------Main2Activity.onDestroy-------");
    }
    public void close(View view){
        finish();
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Log.i(TAG,"-------Main2Activity.onSaveInstanceState-------");
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Log.i(TAG,"-------Main2Activity.onRestoreInstanceState-------");
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(TAG,"-------Main2Activity.onConfiguration-------");
    }
}

相关文章

  • Activity初识

    Activity初识之生命周期 Activity生命周期有七个节点, onCreate( ): activity启...

  • Android Interview Tips

    基础 谈谈Activity的生命周期 介绍不同场景下Activity生命周期的变化过程 启动Activity: o...

  • 面试 | Android四大组件 更新篇

    1、画出Activity的生命周期图 2、介绍下不同场景下Activity生命周期的变化过程 启动Activity...

  • Activity知识要点

    1.Activity生命周期 生命周期有七个方法 onCreate() , onStart(), onResume...

  • Android知识点

    Activity生命周期?保存activity的一些信息在哪个生命周期方法中? 共有七个周期函数:void onC...

  • Activity的生命周期的七个场景

    简单介绍Activity生命周期经常调用的几个方法: onCreate()与onDestroy()Activity...

  • 谈谈Activity的生命周期

    介绍不同场景下Activity生命周期的变化过程 启动Activity: onCreate()--->onStar...

  • Android-收集-持续更新中...

    1、Activity相关: 1、Activity的生命周期 2、Activity的启动模式以及使用场景 启动模式 ...

  • 探索Activity之launchMode

    之前有简单探索了Activity的生命周期, 也提到, Activity的生命周期实际场景远非那么简单, 诸如la...

  • Activity生命周期和启动模式

    1. Activity生命周期 在Android开发艺术探索中,分了两种场景对Activity的生命周期进行介绍:...

网友评论

    本文标题:Activity的生命周期的七个场景

    本文链接:https://www.haomeiwen.com/subject/qrdimttx.html