Activity的介绍与启动模式

首先,我先说说什么是Activity吧。Activity是Android中四大组件之一(Android四大组件:Activity、Service、Broadcast Receiver、Content Provider),一般的,一个用户交互界面对应一个Activity。

接着,我来说说Activity的生命周期。生命周期描述的是一个来从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法。在这个过程中,会针对不同的生命阶段调用不同的方法。Activity从创建到销毁有多种状态,从一种状态到另一种状态时,会调用不同的回调方法。这些回调方法包括:onCreate、onStart()、onResume()、onPause()、onStop()、onDestroy()。其实这些方法都是两两遥相对应的,onCreate创建与onDestroy销毁;onStart开始与onStop停止;onResume(得到焦点)与onPause(失去焦点)。

Activity还有一个方法,叫onRestart()。这个方法是干什么用的呢?答案就是:在Activity被onStop后,但是还没有被onDestroy,在再次启用这个Activity的时候,便会调用onRestart(不会调用onCreate方法)方法。

最后,终于到我们的Activity的启动了。Activity有四种启动模式。分别是:standard、singleTop、singleTask、singleInstance。在讲解四种启动模式之前,我们有必要先了解一下“任务栈”。任务栈:每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用中的栈,它是先进后出的。也就是说,当我们开启Activity1时,它会直接进入到我们的任务栈底,开启Activity2时,接着进入我们的任务栈底,但在Activity1之上,依此类推(如下图)。

Activity的介绍与启动模式_第1张图片

四种启动模式的官方语言:

1、standard:每次激活Activity时(startActivity),都会创建一个Activity的实例,并放入任务栈。

2、singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例。

3、singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop。

4、singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例

我的个人理解:

1、standard:不管我们每次开启的Activity在不在任务栈中,它都会创建一个Activity的实例,并存放入我们的任务栈中。

2、singleTop:当我们激活一个Activity时,如果任务栈的最顶层便是我们要激活的Activity,则不需要重新创建新的Activity,否则便会创建一个新的Activity。

3、singleTask:当我们要激活一个Activity时,如果在任务栈中有这个Activity时,我们便不需要重新创建一个Activity,只需要直接把这个Activity以上的所有Activity都给干掉便可以了。

4、singleInstance:这种开启模式很霸道,每当我们要激活一个Activity,它都会先看我们的任务栈中有没有其他的Activity,如果有,便先创建一个任务栈,然后再进入任务栈中。

你可能感兴趣的:(Activity的介绍与启动模式)