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

Android SDK 开发之应用程序基础

 2010-03-23 04:53:00 来源:WEB开发网   
核心提示:intent,一个"singleInstance"的activity永远位于stack顶端(因为它是stack中唯一的activity),Android SDK 开发之应用程序基础(9),因此它永远处于可以处理intent的位置,但是当一个"singleTask"的activit
intent。一个"singleInstance"的activity永远位于stack顶端(因为它是stack中唯一的activity),因此它永远处于可以处理intent的位置。但是当一个"singleTask"的activity不位于stack顶端时,intent直接被忽略掉.(尽管它被忽略了,但是它的到达会使处理它的task进入前台).

当一个已经存在的activity需要处理一个新的intent的时候,这个intent对象被使用onNewIntent()传递到activity中. (开始启动activity的intent对象可以使用getIntent()方法来取得。)

注意当一个新的Activity实例被创建来处理intent的时候,用户总是可以用BACK键来返回到上一个状态(上一个activity)。但当一个已有的Activity实例处理intent的时候,用户不能用BACK键回到之前的状态。关于启动模式详见元素的文档。

Clearing the stack

如果用户离开一个task很长时间,系统会将该task除了根activity之外所有的其它activity清除掉。当用户返回到该task,它和用户离开的时候一样,只是只剩下了初始的activity。这里的想法是,在一段时间以后,用户可能丢掉了他们原来想做的事情,并且回到这个task中来做新的事情。这是默认的做法。有一些activity属性可以用来改变这个做法:

alwaysRetainTaskState 属性

如果根activity的该属性为"true",则上述默认行为不会发生。该task将保留所有的activity.

clearTaskOnLaunch 属性

如果根activity的该属性为"true",则只要用户离开就将除根activity之外所有activity清除。

The finishOnTaskLaunch attribute

该属性和clearTaskOnLauch行为类似,但它作用于单个activity,而非整个task。它可以导致包括根activity关闭。当设为"true"时,该activity只在当前会话中属于该task。当用户离开再返回时该activity不再有效。

还有一种方法来强制使activity被从stack上移除。如果intent对象包含FLAG_ACTIVITY_CLEAR_TOP标志,并且目标 task已经有一个可以处理该intent的activity,则所有在该activity之上的activity都被清除掉。如果该activity的启动模式为"standard",它也会被从stack上移除,并且启动一个新的实例来处理该intent。这是因为当启动模式为"standard" 时,总是会启动一个新的实例来处理Intent。

FLAG_ACTIVITY_CLEAR_TOP常常和 FLAG_ACTIVITY_NEW_TASK一起使用,可以找到另外一个task中的activity并把它放在一个可以响应intent的位置。

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

Tags:Android SDK 开发

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