Android 活动-- Activity(待写)
应用程序与进程:
应用程序是一组组件的结合
进程是运行这些组件的载体
任务栈:task stack --> 只针对 activity而言,
作用:用来维护用户的界面(activity)体验
任务栈,其实就一个后进先出的链表,记录维护了,当前开启的activity,一般情况,退出一个activity,就把这个activity从任务栈顶移除
如果任务栈空了,任务栈空了会被回收的,应用程序就算是关闭了,但是注意进程,其实还是存在的。
当打开一个应用程序的时候,首先会创建一个进程,然后再进程里面创建一个任务栈,此时候任务栈里有一个界面就是当前被打开的activity
1、Activity启动模式:
在Manifest.xml清单文件中指定launchMode属性值即启动模式
<activity
android:label="@string/app_name"
android:name=".MainActivity"
android:launchMode="standard"
android:configChanges="locale|orientation|keyboardHidden">
</activity>
<!--configChanges,运行时的改变事件通知安卓平台要不要重建Activity;以上配置改变本地和方向以及键盘隐藏时不销毁重建activity。keyboardHidden一般 情况要加上,否则还会重建-->
启动模式launchMode:
1.standard:默认的.
每次启动都会创建新的对象(new).
2.singletop:
单顶模式,如果打开的activity已经在栈顶,不会new,而是直接返回.(应用场景:避免通一个界面被重复的开启)
3.singleTask:
和(4)都具有单实例的特点,由此开启的activity是同一个任务.(任务栈)
(开启一个activity B的时候检查任务栈里面是否有activity B 的实例存在,如果存在,就会清空这个任务栈中activity B上面所有的activity,复用activity B)
4.singleInstance:
和(3)都具有单实例的特点,由此开启的activity不是一个任务.(任务栈)
(这种启动的模式的activity会开启一个新的任务栈,任务栈里面只有一个activity的实例存在,如果这个activity被开启,把这个任务栈放最在前面,如果开启了新的activity,别的activity所在的任务栈会被放在前面,退出也是按标准模式的退出)
这种启动模式比较极端:在整个手机系统的内存中,只会有一个实例存在,如应用O中的activity A是这种模式,被打开,和应用X打开应用O中的activity A是同一个实例(如来电的activity界面就是singleInstance,因为有很多来电界面)
----------------------------------
Task:任务,是activity集合.
不是组件,也不是技术.android重用粒度细.activity.
运行时概念.
同一个任务,在同一个栈中,不同任务在不同栈中
亲和力
默认情况下同一个程序下,所有的Activity首选在同一个任务当中,当然,可以修改某一个activity的亲和力度,在不同的程序当中可以定义有相同亲和力的activity
2、Activity的生命周期
asd
3、Activity的横竖屏
清单文件中配置:
<!-- screenOrientation 固定activity方向;值:landscape 水平朝向 portrait 竖直朝向
configChanges 配置当屏幕方向发生变化时 哪些变化不影响activity生命周期
值:orientation 方向编号时,keyboardHidden 软键盘 ,screenSize 4.0系统屏幕大小的自适应
-->
<activity
android:name="com.seul.towactivity.MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name" >
</activity>
代码中配置: