一、Task以及back stack
当你的应用程序启动时 系统会自动创建Task用于管理Activity
Back stack:(回退栈)按照Activity启动顺序 后进先出
二、Activity的启动模式:
1,standard:默认模式 (拿来主义) 每次都会创建一个新的Activity(多次实例化)
android:launchMode="standard"2,singleTop(拒绝堆叠)
android:launchMode="singleTop"
2,如果有 并且在栈顶 直接拿来使用 调用onNewIntent(Intent intent)方法
3,如果有 没有在栈顶 重新创建一个Activity实例
3,singleTask:(独立门户)
android:launchMode="singleTask"1,没有Activity直接创建
2,如果有 并且在栈顶 直接拿来使用 调用onNewIntent(Intent intent)方法
3,如果有 没有在栈顶 将在它上方的 Activity pop出去 自身有回到栈顶位置调用onNewIntent(Intent intent)方法
4,singleInstance (孤独寂寞)(这个用法不多 浪费空间)
android:launchMode="singleInstance "
三、Intent的七大属性
跳转:
1,显示意图跳转:知道往哪里跳转(ComponentName)
2,隐式意图跳转:不知道往哪里跳转 只要action一致就可以(action)
1,ComponentName:应用组件名称 根据组件名称可以进行显示跳转(知道往哪里跳转)
2,Action:动作
1,自定义
<!-- 注册Activity 设置动作 :必须有意图过滤器--><activity android:name=".SecondActivity">
<intent-filter >
<action android:name="包名.类名"/>唯一
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
2,系统提供
Uri:资源定位符Uri遵循的格式:scheme://host:port/path
scheme:http file content
host:IP
port:端口号
path:请求的路径
3,Category:(种类) 指明动作的环境
android.intent.category.LAUNCHER:程序启动的android.intent.category.DEFAULT :系统默认的执行方法
在清单文件中 有action 必然跟category 否则程序报错
4,Data:数据 描述action数据
5,Type:数据的类型
6,putExtra:通信数据的 intent.putExtra(key,value);
7,Flag:标记 (一般用于启动模式)
FLAG_ACTIVITY_SINGLE_TOP:和启动模式里的SingleTop一致FLAG_ACTIVITY_CLEAR_TOP:和SingleTask相似 >如果当前Activity存在 不在栈顶
首先将上方的Activity pop出 将自身的Activity销毁 重新创建一个Activity 在栈顶
如果当前Activity存在 在栈顶 将将自身的Activity销毁 重新创建一个Activity 在栈顶
FLAG_ACTIVITY_NEW_TASK:
1,不在清单文件中设置 和默认启动模式是一致的
2,在清单文件中设置属性
android:taskAffinity="aa.bb" taskAffinity用于指定当前Activity(activity1)所关联的Task,
android:allowTaskReparenting="true" allowTaskReparenting用于配置是否允许该activity可以更换从属task