最后,在 android、onPause() 或 onStop() 上持久化数据哪个更好?

Finally, where is it better to persist data on android, onPause() or onStop()?

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

点赞

这里

但是,文档指出:

onPause() execution is very brief, and does not necessarily afford enough time to perform save operations. For this reason, you should not use onPause() to save application or user data, make network calls, or execute database transactions; such work may not complete before the method completes. Instead, you should perform heavy-load shutdown operations during onStop()

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

我错过了什么?

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

在 onPause 和 onStart 之间进行权衡是在调用时。当 Activity 不再是前景时调用 onPause。当 activity 完全离开屏幕时调用 onStop。所以在少数情况下会调用onPause而不调用onStop。这让我更喜欢 onPause。

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