![](/img/trans.png)
[英]Activity's onDestroy method is not being called after swiping from background
[英]Activity's onDestroy() method not called after removing activity from background by swiping
我在Application
类中的私有类中实现了ActivityLifecycleCallbacks
。
如果使用Home按钮或Back按钮,则会onStop()
生命周期的onStop()
和onPause()
方法。 如果我通过从后台onDestroy()
出来杀死活动,则不会调用onDestroy()
方法。 下次开始我的活动时会调用它。 在Back press的情况下我使用moveTaskToBack(true)
。
当我们从后台刷出时,应该是什么问题以及应该调用哪个生命周期方法?
从onDestroy()
的文档 :
注意:不要指望这种方法被称为保存数据的地方! 例如,如果某个活动正在编辑内容提供程序中的数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处。 通常实现此方法是为了释放与活动相关联的线程之类的资源,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西。 在某些情况下,系统会简单地杀死活动的托管进程,而不会在其中调用此方法 (或任何其他方法 ),因此它不应该用于执行在进程消失后保留的内容。
这种情况是将应用程序从最近的任务列表中删除。
查看这个答案 ,了解如何在应用程序被淘汰的时候收到通知。
我记得在StackOverflow上读过类似的问题。 这是最佳答案:
从任务管理器 处理退出应用程序从任务管理 器 处理退出应用程序
不幸的是,处理这种情况并不是一个好的答案。 如果应用程序被强制终止,则不一定要调用onDestroy方法。 根据文件。
注意:不要指望这种方法被称为保存数据的地方! 例如,如果某个活动正在编辑内容提供程序中的数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处。
如果可以,请在onPause()方法中清理。 为了让用户进入该屏幕以杀死应用程序,它必须已经后台化,因此将调用onPause()。 (见文件)
从后台滑动应用程序,即从最近清除应用程序会导致整个进程和任务被onDestroy()
,并且当用户从某个活动中退回时,可能不会调用onDestroy()
时间,然后只有该活动被杀死而不是该进程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.