当应用被强行杀死时,LifeCycles被调用

时间:2018-12-21 12:33:07

标签: android android-lifecycle

我在我的应用中使用onDestroy方法清理数据。

Google的文档说documentation

  

注意:不要指望此方法被称为保存位置   数据!例如,如果活动正在编辑内容中的数据   提供者,这些编辑应在onPause()或   onSaveInstanceState(Bundle),不在这里。这种方法通常是   实施以释放与线程相关联的资源(如线程)   活动,这样被破坏的活动就不会留下这些东西   其余的应用程序仍在运行时。 有   系统将简单地终止活动托管的情况   无需调用此方法(或其他任何方法)进行处理,因此   不应该用来做打算保留的事情   该过程消失后。

这种情况使应用程序从最近的任务列表中滑出。

因此,在这种情况下,数据和其他用户重要信息必须保存在onPause或orStop()中。

但是根据此link,没有生命周期被调用。

那我们应该在哪里保存数据?

1 个答案:

答案 0 :(得分:0)

  

但是根据此链接,没有生命周期被调用。

该答案有些令人误解。当用户调出概览屏幕(近期任务列表)时,您的前台活动不应再出现在前台。结果将在该活动上调用onPause()onStop()。您可以通过覆盖onPause()onStop()并记录他们的呼叫来进行测试。

  

那我们应该在哪里保存数据?

这在很大程度上取决于您要构建的东西。

在某些情况下,请在数据更改时保存数据,并且用户指示他们要保留此数据。

在某些情况下,请定期保存数据。例如,在游戏中,您可能经常保存游戏状态,以便用户可以从上次停止的地方取游戏。

在某些情况下,可以将生命周期方法(例如onStop())用作数据保存触发器,但有时不行。说“我们将保存用户在用onStop()致电时输入的内容”可能会很好。说“当我们接到onStop()的电话时,我们将继续向用户的信用卡收费”。