我已在ActivityLifecycleCallbacks
类中的私有类中实现了Application
。
如果使用“主页”按钮或“后退”按钮,则会调用生命周期的onStop()
和onPause()
方法。如果我通过从后台向外扫描来终止活动,则不会调用onDestroy()
方法。下次开始我的活动时会调用它。我正在使用moveTaskToBack(true)
进行背压。
当我们从后台滑出时,应该是什么问题以及应该调用哪个生命周期方法?
答案 0 :(得分:4)
来自onDestroy()
的{{3}}:
注意:不要指望将此方法称为保存地点 数据!例如,如果活动正在编辑内容中的数据 提供者,这些编辑应该在onPause()或 onSaveInstanceState(Bundle),不在这里。这种方法通常是 实现释放资源,如与线程相关联的线程 活动,以便被破坏的活动不会留下这样的东西 当其余的应用程序仍在运行时。 有 系统将简单地杀死活动的主机的情况 进程中没有调用此方法(或任何其他方法),所以它 不应该被用来做那些打算留下来的东西 过程消失后。
这种情况是将应用程序从最近的任务列表中删除。
查看 documentation ,了解如何在应用程序被淘汰的时候收到通知。
答案 1 :(得分:1)
我记得在StackOverflow上阅读类似的问题。以下是最佳答案:
从任务管理器处理退出应用程序 Handle exit application from Task Manager
不幸的是,处理这种情况并不是一个好的答案。如果应用程序被强制终止,则不必调用onDestroy方法。根据文件。
注意:不要指望将此方法称为保存数据的地方!例如,如果某个活动正在内容提供程序中编辑数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处。
如果可以,请在onPause()方法中进行清理。为了让用户进入该屏幕以杀死应用程序,它必须已经后台化,因此将调用onPause()。 (见文件)
答案 2 :(得分:1)
从后台滑动应用程序,即从最近清除应用程序会导致整个进程和任务被终止,并且可能无法调用时间onDestroy()
,当用户从某个活动中退回时,只有该活动被杀死而不是该进程被杀死