Android应用程序组件破坏和娱乐的详细信息

kaa*_*aay 20 android android-lifecycle android-activity

有人会把我推向一些具体的,值得信赖的(最好是简明的)有关以下方面的信息:

  1. 系统重新创建组件的顺序和(如果适用)(片段,活动,活动的线程/ AsyncTasks /定时器,静态数据(何时卸载类?),其他类中的线程/ AsyncTasks /定时器,主机TabActivity,当应用程序在后台和前台时,ActivityGroup,绑定本地服务,应用程序,进程).
    破坏可以在哪些点停止(返回应用程序时会遇到什么状态 - 比如"包括应用程序对象在内的所有状态都被破坏,进程处于活动状态"?

  2. 是否有可能(不修改Android)以编程方式自己导致相同类型的破坏,因此它与系统何时进行无法区分,或者是当我们自己选择释放内存时需要的单独机制(由onLowMemory触发)?

  3. 来自1)的所有场景的可靠再现步骤(junit.framework会吗?我还没有调查过)?

  4. " 如果用户长时间离开任务,系统将清除除根活动之外的所有活动的任务.当用户再次返回任务时,只恢复根活动 ":这是否与进程/组件不同生命周期/破坏,还是与之相关?

我已阅读各种来源提供信息,通常不完整和误导,有时不正确.
我承认,我已经浏览了文档的某些部分,所以我可能错过了或误解了一些东西.

[编辑]为了避免误解:我要问的是Android破坏组件以释放内存,绕过 Activity.onDestroy.
当我将应用程序放在后台并稍后返回时,将出现以下序列之一:

  • onPause,onStop,onRestart,onStart,onResume
  • onPause,onStop,Application.onCreate,onCreate(notNull),onStart,onResume

[EDIT2] Bounty开始了.需要可靠的信息:活动,碎片,应用程序,绑定(可能是远程)服务,流程.
部分/完全销毁方案.见第1点.

And*_*der 0

这不是一个完整的答案,但我建议您在每个方法中放置 toast 消息。添加您自己的onPause()onStop()onResume()等,然后在里面添加如下一行:

Toast.makeText(this, "onPause()", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

您不能直接调用这些方法,但是将另一个活动移动到堆栈顶部将导致调用现有活动上的这些方法。另一件需要记住的事情是,onCreate()不必在每次开始活动时都调用它。这实际上取决于您如何开始活动,例如,如果您发送此意图

Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP);
Run Code Online (Sandbox Code Playgroud)

onNewIntent()如果已经创建,它将显示为 call 。总之,最好的事情就是观看 Toast 消息。此外,您确实需要专注于使用调试器。在每个方法上打断点就可以看到了。我确信的一件事是您不能直接调用这些方法,例如onPause(). 另请记住,通常您不知道何时onDestroy()会被呼叫。

  • 请原谅我,但我不明白这对我有什么帮助。我更新了描述以澄清我的意思,简而言之:onDestroy 与此无关。我需要有关要准备什么以及不能发生什么的信息。并非所有内容都可以限制在一个 Activity 范围内,例如,我不知道如何管理 TabActivity 内的 Activity。尝试和错误是不可能的,我几乎总是从“一切都活着”跳到“除了进程之外的一切都被摧毁”。如何测试其他情况?另外,为什么我应该使用Toasts?甚至 system.out 似乎也是更好的选择。 (2认同)