当Activity
进入暂停状态时,它的实例仍保留在由操作系统管理的Activity
堆栈中。我知道一段时间后,它会摧毁这个实例。现在我的问题是,操作系统在很长一段时间内销毁onDestroy()
实例后是否调用了Activity
方法?
就像我在Toast
方法中放置onDestroy()
一样,当Activity
实例被OS销毁时会显示? (我知道按下后退按钮会显示它。)
这个问题的本质使得测试变得困难,因为有时需要一天或更长时间才能破坏堆栈中的Activity
实例。
答案 0 :(得分:1)
无法保证会被调用。你可以看到Activity#onDestroy。
注意:不要指望将此方法称为保存数据的地方!例如,如果某个活动正在编辑内容提供程序中的数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处。通常实现此方法是为了释放与活动相关联的线程之类的资源,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西。 在某些情况下,系统会直接杀死活动的托管进程,而不会在其中调用此方法(或任何其他方法),因此不应该使用它来执行在进程消失后仍然存在的事情。 /强>
通过简单地杀死它可以是例如一个System.exit
调用或类似的东西,它会跳过生命周期钩子。