最后,在android、onPause()或onStop()上,在哪里保存数据更好



我在一些地方看到,在onPause((方法中持久化数据是可以的(甚至是可取的(。

像这里

https://stackoverflow.com/a/41778266/3913107

这里是

https://stackoverflow.com/a/29496430/3913107

然而,文件指出:

onPause((的执行非常短暂,不一定能提供有足够的时间执行保存操作。出于这个原因,你应该不使用onPause((保存应用程序或用户数据,使网络调用或执行数据库事务;这样的工作可能无法完成在方法完成之前。相反,您应该执行重载onStop((期间的停机操作

https://developer.android.com/guide/components/activities/activity-lifecycle#onpause

我错过了什么?

所以文档有点过时。例如,它说不要在onPause中进行联网——无论如何你都不能。网络需要在主线程以外的线程上,并且总是在主线程上调用onPause。你可以向另一个线程发送一个请求来进行网络连接,但无论你在哪里进行,这都不是问题

在onPause和onStart中执行操作之间的权衡是何时调用。当"活动"不再处于前台时,会调用onPause。当活动完全脱离屏幕时调用onStop。因此,在少数情况下会调用onPause而不调用onStop。这让我更喜欢onPause。

真正的教训是onPause和onStop都应该很快。两者都不要做很多工作。如果你需要做一些不快的事情,那就在另一个线程上做。当然,这几乎适用于主线程上的所有内容——如果速度不快,请在其他地方进行。

最新更新