我想很多开发者都遇到过这种情况:
用户打开我们的应用,在某个表单Activity填写信息准备提交,但是这个时候进来了一个电话或者用户去干其他事情而不得不离开当前界面(而不是直接退出)。等过了一段时间,用户打算重新来处理的时候发现之前填写的信息已经都不见了。
那么我们本节就讨论怎么让这个Activity保活。
众所周知
如果用户离开任务较长时间,系统会清除任务中除根 Activity 以外的所有 Activity。当用户再次返回到该任务时,只有根 Activity 会恢复。系统之所以采取这种行为方式是因为,经过一段时间后,用户可能已经放弃了之前执行的操作,现在返回任务是为了开始某项新的操作。
那么,如果我们要解决文首那个问题怎么办?很简单。
您可以使用一些 Activity 属性来解决:
alwaysRetainTaskState
如果在任务的根 Activity 中将该属性设为 “true”,则不会发生上述默认行为。即使经过很长一段时间后,任务仍会在其堆栈中保留所有 Activity。
clearTaskOnLaunch
如果在任务的根 Activity 中将该属性设为 “true”,那么只要用户离开任务再返回,堆栈就会被清除到只剩根 Activity。也就是说,它与 alwaysRetainTaskState 正好相反。用户始终会返回到任务的初始状态ÿ