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

2019-03-21  本文已影响0人  lllllliudahong

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();

上一篇下一篇

猜你喜欢

热点阅读