11、横竖屏切换(横竖屏方向改变带来的问题)
问题:当横竖屏切换时,会导致生命周期重置,这在游戏设计中是不能被理解的,所以针对这种问题我们可以有2种方法解决:
1、直接在清单文件中指定屏幕的方向
android:screenOrientation=”landscape” | portrait
2、或在清单文件通过配置内容随着方向改变而改变,但是生命周期方法不会再重新调用
android:configChanges=”keyboardHidden|screenSize|orientation”
12、任务和栈
adb shell dumpsys activity 使用命令查看activity启动任务栈的详细信息
* Task – 任务
一个运用程序里面可以包含多个界面,每一个界面都是来设计显示界面,并且与用户进行交互.没一个界面都是一个任务.
- Stack – 栈
一种数据格式,遵循后进先出. 队列(queue)也是
13、activity启动模式
设计activity的启动模式有2中方法:
第一种是在清单文件设计:
第2中方法是在启动界面是设计:
启动模式的分类(四钟):
- standard - 默认的启动模式
启动多少次界面,就会有多少个实例被压到栈中。
- singleTop - 单一顶部模式
只要当前启动的activity,实例位于栈顶,那么将不会继续创建该界面的实例,只要不是位于栈顶,那么与默认的启动模式一样。
场景: 短信编写界面,用于去回避一些奇怪的现象。
- singleTask - 单一任务栈
如果启动的任务在栈中已经存在实例,那么将复用以前的实例对象,并且把该实例与栈顶之间的其他实例全部移除掉,让该实例位于栈顶。
应用场景: 浏览器的界面 ,如果一个应用启动非常的消耗内存开销,那么可以做成这个启动模式。
- singleInstance - 全局唯一模式 (单例模式)
特点: 如果哪一个界面,它的启动模式是singleInstance,那么它的实例将会存放到一个独立的栈中,并且这个栈有且只有它自己一个实例 。以后要想显示它,无非就是做栈的切换工作就可以了。
应用场景: 如果一个界面在单位时间内,创建的频率非常大,非常高。 可以设计成singleInstance模式。 拨号界面、紧急呼叫界面