WEB开发网
开发学院手机开发Android 开发 Android SDK 开发之应用程序基础 阅读

Android SDK 开发之应用程序基础

 2010-03-23 04:53:00 来源:WEB开发网   
核心提示:这些模式相互之间的区别有以下4个方面:哪一个task将持有响应intent的activity,对于"standard"和"singleTop"模式,Android SDK 开发之应用程序基础(8),是由初始化intent并且调用startActivity()的task来持有 —

这些模式相互之间的区别有以下4个方面:

哪一个task将持有响应intent的activity。对于"standard"和"singleTop"模式,是由初始化intent并且调用startActivity()的task来持有 — 除非intent对象有FLAG_ACTIVITY_NEW_TASK标志。在后一种情况下,使用一个新的task。另一方面,"singleTask" 和"singleInstance"模式下的activity永远处于task的根部。它们定义一个task,永远不会在另一个task中启动。

一个activity是否可以有多个实例。一个"standard"或者"singleTop"的activity可以有多个实例。它们可以属于多个task,一个task可以有同一个 activity的多个实例。而"singleTask"和"singleInstance"的activity只能有一个实例。由于它们位于task的根部,这个限制意味着在一个设备上不会有多余一个的instance。

该实例能否和其它activity共用一个task。一个"singleInstance"的activity只能作为一个task中的唯一的activity。如果它启动了另一个activity,后者会启动到一个不同的task中去,不管它的启动模式如何 — 就好像设定了FLAG_ACTIVITY_NEW_TASK一样。在其他方面"singleInstance"模式和"singleTask"模式都一样。其它三种模式都允许多个activity属于它们所在的task。一个"singleTask"activity永远位于task的根部,但是它可以启动其它的activity并分配到它所在的task。"standard"和"singleTop"的activity可以在一个stack的任意位置出现。

在一个新的intent到达时,是否需要启动该类的一个新的实例来处理它。对于"standard"模式,会启动一个新的实例来处理每个新的intent。每个实例只处理一个intent。对于"singleTop"模式,重用一个已存在的实例来处理该 intent,如果它存在于目标task的activity stack的顶端。如果它不在顶端,则不重用它,而是为新的intent创建一个新的实例并推入stack顶端。例如,假设一个task的 activity stack有依次A,B,C,D 4个activity,A位于根部,D位于顶端,stack为A-B-C-D。这时候一个intent到达并需要一个类型D的activity。如果D的启动模式为"standard",则启动一个新的D实例,stack变为A-B-C-D-D。但是,如果D的启动模式为"singleTop",则当前的 D将处理该intent,stack仍然保持为A-B-C-D。另一方面,如果到达的intent需要一个类型B的activity,则无论B的模式为"standard"还是"singleTop",都会启动一个B的实例,则stack将会成为A-B-C-D-B。如前所述,对于"singleTask"和"singleInstance"的activity,不可能有多余一个的实例,因此该唯一的实例需要处理所有的

上一页  3 4 5 6 7 8 9 10 11 12 13  下一页

Tags:Android SDK 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接