有人可以向我提供一些具体的、值得信赖的(最好是简洁的)信息,内容如下:
系统销毁和(如果适用)重新创建组件的顺序
(片段、活动、活动的线程/异步任务/计时器、
静态数据(类何时卸载?),其他类中的线程/异步任务/定时器,主机
TabActivity、ActivityGroup、绑定本地Services、Application、进程)
当应用程序位于后台和前台时。
在哪些点上破坏可以停止(可以遇到什么状态
返回应用程序后 - 就像“包括应用程序对象在内的所有内容
被摧毁,进程还活着”?
是否有可能(不修改 Android)以编程方式造成同样类型的破坏
以便与系统执行此操作时无法区分,或者当我们自己选择释放内存(由 onLowMemory 触发)时需要一个单独的机制?
1) 中所有场景的可靠再现步骤(junit.framework 可以吗?我还没有调查过)?
"如果用户长时间离开某个任务,系统会清除该任务中除根活动之外的所有活动。当用户再次返回任务时,仅恢复根 Activity http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html#Clearing“:这是除了进程/组件生命周期/销毁之外,还是与之相关?
我读过各种来源提供的信息,通常不完整且具有误导性,有时甚至是不正确的。
我承认,我浏览了文档的某些部分,所以我可能遗漏或误解了某些内容。
[编辑]为了避免误解:我要问的是Android销毁组件以释放内存,通过传递Activity.onDestroy。
当我将应用程序置于后台并稍后返回时,将发生以下序列之一:
- onPause、onStop、onRestart、onStart、onResume
- onPause、onStop、Application.onCreate、onCreate(notNull)、onStart、onResume
[编辑2]
赏金活动开始了。需要以下方面的可靠信息:活动、片段、应用程序、绑定(可能是远程)服务、流程。
部分/全部破坏场景。参见第一点。
这就是我的经验以及我询问过的开发人员的经验似乎表明:
-
- 碎片不会自动销毁。
- 应用程序堆栈上的不可见 Activity 可以按任意顺序、任意数量自动销毁。
- 被销毁的活动(或任何其他类)的线程和静态保持不变,直到应用程序被销毁。
- TimerTasks:尚未测试。
- 绑定本地服务:在最后一个绑定活动和应用程序销毁之间的某个地方被销毁。
- 应用程序是进程中最后进入的事物,并且与所有线程一起“进入”。
- 在应用程序对象销毁后,该进程可以存在很长一段时间(20 分钟以上),除非您有自动任务终止程序。
- TabActivity 下或 ActivityGroup 中的活动不会自动销毁,但如果容器被销毁,则会立即全部销毁。
示例:选项卡下带有 ActivityGroups 的 TabActivity。所有活动均实时直播。另一个活动已启动,全屏。 TabActivity 及其中的所有内容现在都可以被 Android 销毁,无论是一次性销毁还是根本不销毁。
-
NO.
如果您手动销毁一个 Activity,它会经历整个生命周期,并且在再次启动时不会将 Bundle 传递给 onCreate。
此外,onLowmemory 并不可靠 - 即使分配步骤很小,在抛出 OutOfMemoryError 之前也可能永远不会调用它。
-
NO.
尽管自动销毁/恢复是 Android 中的一个主要功能,但没有任何方法可以测试此类场景。
- 这可能是相关的only该进程是否仍然存在。如果是这样,Android 将尝试恢复旧的 Activity。如果没有,那就是干净的重新启动。
上述内容包括一些假设。
我仍在等待有人确认并提供一些文档(保证不依赖于类的当前实现)。
如果其中有任何错误,请纠正我。
编辑:以上信息可能已过时,在Android 2.1-2.3上测试
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)