Android SDK 开发之应用程序基础
2010-03-23 04:53:00 来源:WEB开发网当一个已经存在的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的位置。
更多精彩
赞助商链接