什么是Intent生命周期?

时间:2014-04-09 06:29:08

标签: android android-intent

说我已经开始使用新的Intent(上下文,类) 开展活动 A 在它,这个意图什么时候被破坏?特别是,在以下几种情况下,活动 的代码中的getIntent()返回完全相同的意图 i

  1. 按下Android系统任务管理器上的活动任务
  2. 点击了应用图标,重新创建了活动并将其带到了前面
  3. 我已经尝试过我的应用程序了,我得到了奇怪的结果......通常它没有得到相同的意图,但有时似乎它确实如此,所以我不知道最新情况如何,无论如何如果 i 可以从任何上层选项返回如何避免它?

    我认为如果知道任何有关此内容的文档,那么对Intent生命周期的一瞥就会有所帮助......

1 个答案:

答案 0 :(得分:1)

  

假设我已经使用新的Intent(上下文,类)启动了活动A,其中包含敏感数据,此意图何时被销毁?

只要存在对象{/ 1}}对象的对象/类 - 它就不会被垃圾回收。活动(活动A)保持对启动它的意图的引用,因此只要Intent对象没有被垃圾收集 - 那么Activity也不会被垃圾收集。

重要评论:onDestroy()活动回调和类干扰器是不同的东西!

  

在以下几种情况下,活动A代码中的getIntent()会返回完全相同的意图吗?

假设您未明确调用i

  

1)按下android的任务管理器上的活动任务:

如果活动先前已停止响应后退按钮导航或显式上有setIntent()的人,则活动会在finish()回调上传递。在这种情况下 - 按下"应用程序"从最近的任务管理器开始,将从头开始重新创建具有新意图的活动,因此 - onDestroy()会带来这个不包含额外内容或其他重载的新意图。

否则(活动通过主页按钮发送到后台,或者其他活动在其上面开始):当您从最近的任务中重新启动它时 - 它将是您传递的原始附加内容的目标对象它之前...

  

2)点击了App图标,重新创建了活动并将其带到了   前

我在(1)中提到的基本相同的情况适用于(2),基本上它取决于另外两件事:

  • 您使用的特定启动器的intent flags在启动活动时所产生的意图会超载。

  • 您在用于开始自己的活动的意图上重载的launch mode和活动标记。

假设您没有使用上述任何一种,并且您正在使用正常的良好功能启动器应用程序 - 行为将完全按照我在(1)中的解释