1.Activity是什么
Activity是Android的四大组件之一
Activity是Android视图的载体,负责与用户进行交互。我们可以通过setContentView给Activity加载视图。视图在交互的过程中会有不同的状态,Activity从创建到销毁也有自己的生命周期。
Activity生命周期相关的函数有:
onCreacte()---在Activity的生命周期中只调用一次,在这个函数里做一些初始化Activity的工作,例如设置Activity的视图布局,初始化控件,初始化数据,设置监听等。
onStart()---在Activity的生命周期中这个函数可能会被多次调用,当Activity即将显示到前台时会被调用,此时Activity不能与用户进行交互,即未获取到焦点的状态。
onResume()---在Activity的生命周期中这个函数可能会被多次调用,当Activity显示到屏幕上并且获取焦点时调用该方法,此时Activity已经显示在前台,且处于运行状态。
onPause()---在Activity的生命周期中这个函数可能会被多次调用,当新的Activity被启动时,会先调用旧Activity的onPause()函数,然后再调用新Activity的onCreate()函数。
onStop()---这个函数也会被多次调用。当Activity销毁时,调用onDestroy()函数之前会先调用onStop()。当当前Activity即将从前台进入后台时也会被调用。从当前Activity启动新的Activity时,当前Activity会调用该函数使其进入后台,把前台位置让给新的Activity。
onDestroy()---在Activity的生命周期中只调用一次,当Activity销毁时调用,在这个函数里可以做一些释放资源的操作。

Activity的四种启动模式LunchMode
Standard标准启动模式
Activity默认的启动模式就是Standard模式。该模式下启动一个Activity,则创建一个实例并压入ActivityStack的栈顶。即使要启动的Activity已经有一个实例在栈顶,依然会去创建新实例并压入栈顶,这就会造成同一个Activity在ActivityStack中会有多个实例存在的现象。如下图

SingleTop复用栈顶模式
SingleTop复用栈顶,即复用栈顶的实例。当启动Activity时,会先判断ActivityStack的栈顶是否是该Activity的实例,如果是则复用栈顶的该实例,如果不是则创建新实例并压入栈顶。因为只要实例不是位于栈顶就不会被复用,所以这种模式下ActivityStack里依然存在同一个Activity有多个实例的现象。如下图

SingleTask栈内单例复用模式
SingleTask栈内单例复用,ActivityStack中的Activity实例可复用,无论该实例是否位于栈顶。当启动一个Activity时,会先遍历当前的ActivityStack里是否已经有该Activity的实例,如果有则不创建新实例,而是执行onNewIntent()函数复用该实例。即将该实例之上的Activity实例移出ActivityStack,使目标实例其位于栈顶。如下图

SingleInstance全局单例且独享栈的模式
SingleInstance全局单例且独享栈,即Activity实例独享一个ActivityStack,且全局有且只有一个Activity的实例。当启动Activity时,会先判断系统中是否已经存在实例,如果存在则调用目标Activity的onNewIntent()函数复用,否则创建一个新的ActivityStack再创建新的Activity的实例,并将实例压入其中,使新实例独享新的ActivityStack。如下图

网友评论