仅仅作为AndroidDeveloper的学习笔记
Introduction to Activities
Activities是Android四大组件之一,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。
在manifest.xml中的写法为:
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity" />
...
</application ... >
...
</manifest >
Activity Lifecycle
- 整个生命周期(
onCreate()
->onDestroy()
) - 可见生命周期(
onStart()
->onStop()
) - 前台生命周期(
onResume()
->onPause()
)
整个生命周期和前台生命周期很好理解,那么可见生命周期和前台生命周期有什么区别呢?因为屏幕上可以存在多个Activity,比如在一个Activity1中打开了一个对话框(这个对话框也是一个Activity,记为Activity2),此时用户既可以看到Activity1也可以看到Activity2,此时Activity2处于前台生命周期,Activity1处于可见生命周期。如下图所示,当点击START DIALOGACTIVITY按钮时,MainActivity会调用onPause()方法,而不是onStop()。
完整的生命周期示意图如下图所示:
Tasks and Back Stack
Android中的Activity是可以层叠的,没启动一个新的Activity,就会覆盖在原有的Activity之上,然后点击Back键会销毁最上面的Activity,下一个Activity就会重新显示出来。可以思考一下这种层叠的结构怎么实现?没错,就是栈,First in Last out,假设启动顺序为Activity1 -> Activity2 -> Activity3,那么栈中的结构是,Activity3在顶部,Activity1在底部。
When the user presses the Back button:
在Android中,是使用Task来管理Activity的,一个Task就是一个这样的栈结构,这个栈也被称为Back Stack。
launchMode:
- standard(the default mode):每启动一个新的Activity,都会创建一个新的实例
- singleTop:如果启动的Activity已经在栈顶,则不会再创建实例
- singleTask:只要启动的Activity在栈里面,则不会再创建实例,并且这个Activity之上的所有Activity全部出栈,如果没有在栈里面,则创建实例
- singleInstance:这种模式是为了不同的APP能共享Activity,启动的Activity会在一个单独的Back Stack中,这个Back Stack只有这一个Activity。
这里我画了一个示例图: