根据 Android 文档,系统将清除它认为已被用户放弃的任务(完成启动该任务的所有活动):
https://developer.android.com/guide/components/tasks-and-back-stack.html#Clearing
如果用户长时间离开一个任务,系统会清除该任务除根Activity之外的所有Activity。当用户再次返回任务时,仅恢复根活动。系统的行为方式是这样的,因为在很长一段时间后,用户可能已经放弃了他们之前正在做的事情,并且正在返回任务开始新的事情。
https://developer.android.com/guide/topics/manifest/activity-element.html#always
通常,当用户从主屏幕重新选择该任务时,系统会在某些情况下清除任务(从根活动上方的堆栈中删除所有活动)。通常,如果用户在一定时间内(例如 30 分钟)没有访问任务,则会执行此操作。
这种行为可以很容易地在运行 Gingerbread 和更早版本的设备上重现。启动一个应用程序并创建一些回溯历史,然后点击主页按钮并等待半小时。从主屏幕再次启动应用程序,状态已被清除,就好像它正在开始一项新任务一样。完美的。
但是,在运行 ICS 及更高版本的设备上,我似乎根本无法重现此行为,即使在任务在数小时或数天后处于非活动状态后也是如此。当应用程序从主屏幕重新启动时,任务始终处于我离开它的状态。
假设文档是正确的,现代版本的 Android(API 14+)在什么情况下会自动清除任务?
如果行为发生了变化并且文档已过期,那么该alwaysRetainTaskState
属性的用途是<activity/>
什么?是否已将默认值更改为"true"
或现在已弃用此属性?
注意:这里我不是在谈论 Android 的进程生命周期管理,它依赖于设备资源。无论如何,终止进程对用户应该是透明的,并且不会影响任务状态。