Android 的 Activity
关于 Activity 的几点用法
本文是《Android 开发艺术探索》第一章的读书笔记。
Activity 的 Lifecycle
首先是 Activity 的 lifecycle 几个注意的地方:
- onRestart 会在 activity 从不可见到重新可见的过程中调用。
- onStart 表示 activity 已经可见了,但是还没有在前台,不可和用户交互。
- onPause 一般紧跟着 onStop ,只有极端情况下,用户又返回当前 activity 才会又调用 onResume 。一般进行一些不耗时的处理,比如停止动画等。
- onStop 如果新启动的 activity 采用了透明的主题,则下面的 activity 的 onStop 不会被调用。因为仍然可见。
- 第二个 activity 的 onCreate 是在第一个 activity 的 onPause 之后调用的。过程类似:
A.onPause
B.onCreate
B.onStart
B.onResume
A.onStop
#include <studio.h>
int main(char *argc, char *argv[]) {
printf("hello world");
return 0;
}
- 系统只有在 Activity 异常终止的时候才会调用
onSaveInstanceState
和onRestoreInstanceState
来存储和恢复数据。 - 为了防止 Activity 在转屏时候重启,configChanges 除了指定 orientation 还需要指定 screenSize 。
Activity 的 LaunchMode 和 Flags
Standard 模式
标准模式是每次 startActivity 都会产生一个新的 activity 的实例。
singleTop 模式 (FLAG_ACTIVITY_SINGLE_TOP)
如果新的 Activity 已经位于任务栈的栈顶,则不会重新创建,同时 onNewIntent
会调用。否则创建新的 instance 。
singleTask 模式 (FLAG_ACTIVITY_NEW_TASK)
只要新的 Activity 在栈内存在,就复用,并清除所有在此之上的 Activity 。
singleInstance 模式
此 Activity 只要存在,就返回,并且此 Activity 单独构成一个任务栈。
FLAG_ACTIVITY_CLEAR_TOP
一般被启用的 Activity 是 singleTask 的,如果栈中不存在,则创建新的;如果存在,则清除之上的 Activity 并回调 onNewIntent 。如果不是 singleTask 模式,是普通模式,则会包含此 Activity 之上的清除之后,重新创建新的入栈。
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
此 Activity 不会出现在历史 Activity 的列表中。