Android SDK 开发之应用程序基础
2010-03-23 04:53:00 来源:WEB开发网主要的Intent标签值有以下几种:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
FLAG_ACTIVITY_SINGLE_TOP
主要的
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
下面我们来看看它们的作用。
Affinities and new tasks
默认情况下一个应用程序中所有的activity相互之间都有一个affinity. 对于一个activity也可以设置一个单独的affinity. 当启动activity的Intent对象包含FLAG_ACTIVITY_NEW_TASK标志,并且
activity的allowTaskReparenting属性为"true".
FLAG_ACTIVITY_NEW_TASK 标志
一个新的activity在默认情况下在调用startActivity()的activity所属的task中启动,被推入和启动它的activity相同的activity栈中。但是,如果传给startActivity()的Intent对象包含
FLAG_ACTIVITY_NEW_TASK标志,则系统寻找一个不同的task来管理改这个新的activity。一般来说是一个新的task,不过也不一定是。如果已经存在一个和新activity有相同affinity的
task,则该activity在这个task中启动。否则启动一个新的task。
allowTaskReparenting属性
如果一个activity的allowTaskReparenting属性为"true",它可以从它启动时所在的task移动到另一个它具有affinity的task中。例如,假设一个旅游助理软件中有一个activity是用来报告天气的。它和
这个应用程序中的其它activity有相同的affinity(默认affinity)并且允许reparenting。某个activity启动天气预报器,因此它和这个activity属于同一个task。然而,当旅游应用程序进入前台时,天气
报告器会被重新分配到旅游应用程序的task中去。
如果对于一个用户来说,一个apk文件包含了多于一个的应用程序,很可能你需要为不同的activity赋予不同的affinity。
Launch modes
"standard" (the default mode)
"singleTop"
"singleTask"
"singleInstance"
更多精彩
赞助商链接