美文网首页
activity的四种启动模式,和七大生命周期

activity的四种启动模式,和七大生命周期

作者: lllllliudahong | 来源:发表于2019-03-21 11:20 被阅读0次

    Activity 设置 launchMode:

    standard

    Activity 默认的启动模式,这种模式下,每次 startActivity 都会在栈顶创建一个新的实例,在同一个任务中可以存在多个Activity 的实例。

    singleTop

    栈顶复用,也就是说,要启动 singleTop 模式的 Activity,如果它恰好在当前栈顶,那么直接复用,并且会首先调用这个实例的 onNewIntent()方法。否则,就重新创建一个实例入栈。

    singleTask

    在系统中只有一个实例,当再次启动该 Activity 时,会重用已存在的任务和实例,并且会首先调用这个实例的 onNewIntent()方法,finish()实例之上所有的activity。
    补充一个通过singleTask式退出App的方法:
    1.MainActivity设置为SingleTask

    android:launchMode="singleTask"
    

    2.重写MainActivity中的onNewIntent方法

    
    private static final String TAG_EXIT = "exit_Application";
     
       @Override
       protected void onNewIntent(Intent intent) {
           super.onNewIntent(intent);
           if (intent != null) {
               boolean isExit = intent.getBooleanExtra(TAG_EXIT, false);
               if (isExit) {
                   this.finish();
               }
           }
    

    3.需要退出时在Intent中添加退出的TAG

    Intent intent = new Intent(this,MainActivity.class);
    intent.putExtra(MainActivity.TAG_EXIT, true);
    startActivity(intent);
    

    singleInstance

    单一实例模式:整个手机系统中只有该Activity的一个实例。并且该实例单独存在一个activity栈中。

    activity的七大生命周期

    来自Google官网的截图


    activity.png

    1.onCreate(): 当Activity第一次被创建时调用,完成活动的初始化操作。
    2.onStart(): 当用户可以看到这个Activity时调用
    3.onResume() : 当获得了用户的焦点时
    4.onPause() : 当系统准备启动或回复另一个活动时调用。在这个方法中将一些小号CPU的资源释放,保存一些重要数据。
    5.onStop() : 当活动完全不可见是调用,当新启动的活动时对话框式的,还处于可见时,该方法是不会被调用
    6.onDestroy():活动被销毁时调用
    7.onRestart():当活动有停止状态变为运行状态时调用。

    onCreate()-->onDestroy()是整个生命周期,onDestroy()释放所有资源。
    onStart()-->onStop()是可见的生命周期,这两个方法可以被多次调用。
    onResume()-->onPause()是前台的生命周期,也可以被多次调用,处于所有 Activity的最上面,获得焦点。

    总结:

    1.Activity第一次启动:onCreate()-->onStart()-->onResume();
    2.Activity被弹框获取焦点,再重新获取焦点:onResume()-->onPause();
    3.Activity停止运行(被其他Activity遮住了,在后台未被销毁):onPause()-->onStop();
    4.停止运行后重新运行:onRestart()-->onStart()-->onResume();
    5.运行是被销毁:onPause()-->onStop()-->onDestroy();
    6.singleTop(恰好在当前栈顶)和singleTask (再次启动):onNewIntent()-->onRestart()-->onStart()-->onResume(),每次执行onNewIntent之前,一定有经历过onPause();

    相关文章

      网友评论

          本文标题:activity的四种启动模式,和七大生命周期

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