WEB开发网
开发学院手机开发Android 开发 Android开发之活动与任务 阅读

Android开发之活动与任务

 2010-05-10 16:00:00 来源:WEB开发网   
核心提示:响应一个意图时是否需要生成类的新实例,对于默认的”standard”模式,Android开发之活动与任务(4),创建新的实例去响应每一个新的意图,每个实例仅处理一个意图,它与alwaysRetainTaskState截然相反,用户总是返回到任务的初始状态,对于”singleTop “模式,一个类已存在的实例可以重新用了

响应一个意图时是否需要生成类的新实例。对于默认的”standard”模式,创建新的实例去响应每一个新的意图。每个实例仅处理一个意图。对于”singleTop “模式,一个类已存在的实例可以重新用了处理新的意图,如果它位于目标任务的活动栈的栈顶。如果不是在栈顶,就不可以重用。相反,将创建一个新的实例并压入栈顶。

例如,一个任务的活动栈由根活动A、B、C和D组成,顺序为A-B-C-D。当一个意图到达请求类型D时,如果D是默认的”standard”模式,将产生D类的新实例且栈变为A-B-C-D-D。然而,如果D的启动模式是”singleTop “,已存在的D实例将去处理新的意图(因为它在栈顶)且栈仍然是A-B-C-D。

如果,另一方面,到达的意图是请求类型B时,一个B的新实例将启动而不管B的模式是”standard”还是”singleTop “(因为B不是在栈顶),因此栈的结构为A-B-C-D-B。

如前所述,”singleTask”和”singleInstance”活动仅可以被实例化一次,因此他们的实例将处理所有的新意图。一个”singleInstance”活动总是在栈顶(因为仅有一个活动在任务中),因此它总是在可以处理意图的位置。然而,一个”singleTask” 活动在栈中可能有或可能没有其他活动在它上面。如果有,即它不在处理意图的位置,意图会被丢弃(即使意图被丢弃了,它的到来使任务转到并保持在前台运行)

当一个已存在的活动被请求处理一个新的意图,Intent对象将通过onNewIntent()调用传到活动。(产生启动活动的意图对象可以由 getIntent()获取。)

注意到当一个活动的新实例被创建去处理新意图时,用户总是可以按返回键返回到之前的状态(之前的活动)。但是当一个已存在的活动实例去处理新意图是,用户不可以按返回键返回到意图到达之前的状态。

4、清除栈(Clearing the stack)

如果用户离开一个任务很长时间,系统将会清除根活动之外的活动。当用户再次返回到这个任务时,像用户离开时一样,仅显示初始的活动。这个想法是,一段时间后,用户可能已经放弃之前做的东西,及返回任务做新的事情。这是默认情况,有些活动属性可以用来控制和改变这个行为。

alwaysRetainTaskState属性

如果在任务的根活动中这个属性被设置为”true”,刚才描述的默认行为将不会发生。任务将保留所有的活动在它的栈中,甚至是离开很长一段时间。

clearTaskOnLaunch属性

如果在任务的根活动中这个属性被设置为”true”,只有用户离开就清除根活动之外的活动。换句话说,它与alwaysRetainTaskState截然相反。用户总是返回到任务的初始状态,甚至是只离开一会。

上一页  1 2 3 4 5  下一页

Tags:Android 开发 活动

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