Activity横竖屏/任务栈的一些知识点。

默认情况下,横竖屏切换 Activity 会被销毁然后重新创建。如果不想Activity中的数据受到横竖屏影响/键盘影响/屏幕大小影响,需要在配置文件中加上如下参数(4.0以下的版本,不需要设置screenSize参数)。

image.png

任务栈

  • 任务栈(task stack)(别名 back stack后退栈),记录用户存放用户开启的Activity的;
  • 一个应用程序开启后系统会分配一个任务栈,当所有的Activity都退出的时候,任务栈就清空了;
  • 任务栈的ID是一个自增长的Integer数据类型;
  • 后进先出,栈顶的Activity始终都是用户操作的Activity;
  • 在Android系统中会存在多个任务栈,一个应用程序一个任务栈。

Activity的启动模式(清单文件中配置)

image.png

  • standard(标准默认模式,每次startActivity都是创建一个新的Activity的实例,适用于大多数情况);
  • singleTop (单一顶部模式,如果要开启的Activity在任务栈顶部已经存在,就不会创建新的实例,而是调用onNewIntent()方法);
  • singleTask (单一任务栈,Activity只会在任务栈中存在一个实例,如果要激活的Activity在任务栈中已经存在,就不会创建新的Activity,而是复用这个已经存在的Activity,调用onNewIntent()方法,并且把这个Activity上面的Activity都给清空——Activity还是运行在当前应用程序的任务栈里面的,不会创建新的任务栈);
  • singleInstance(单一实例,在整个手机操作系统里面,只有一个实例存在,他会运行在自己独立的任务栈里面,并且任务栈里面只有他一个实例存在) 例子:呼叫来电界面。