处于暂停状态时,活动会发生什么?

时间:2018-05-08 08:11:48

标签: android android-activity android-lifecycle

Activity进入暂停状态时,它的实例仍保留在由操作系统管理的Activity堆栈中。我知道一段时间后,它会摧毁这个实例。现在我的问题是,操作系统在很长一段时间内销毁onDestroy()实例后是否调用了Activity方法?

就像我在Toast方法中放置onDestroy()一样,当Activity实例被OS销毁时会显示? (我知道按下后退按钮会显示它。)

这个问题的本质使得测试变得困难,因为有时需要一天或更长时间才能破坏堆栈中的Activity实例。

1 个答案:

答案 0 :(得分:1)

无法保证会被调用。你可以看到Activity#onDestroy

  

注意:不要指望将此方法称为保存数据的地方!例如,如果某个活动正在编辑内容提供程序中的数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处。通常实现此方法是为了释放与活动相关联的线程之类的资源,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西。 在某些情况下,系统会直接杀死活动的托管进程,而不会在其中调用此方法(或任何其他方法),因此不应该使用它来执行在进程消失后仍然存在的事情。 /强>

通过简单地杀死它可以是例如一个System.exit调用或类似的东西,它会跳过生命周期钩子。