Android 中的 OnResume() 是否使 Activity 加载速度更快?

Does OnResume() in Android makes Activity loading faster?

我正在开发一个 Android 应用程序,我必须从 Android 数据库加载大量数据并在屏幕上查看它。

在开发的早期阶段,我曾经在 OnCreate() 方法中从数据库中检索数据,当数据变得巨大时,它确实减慢了 activity 的启动速度。因此,我在 OnResume() 方法中调用了数据检索并在屏幕上查看数据,这样我的应用程序就不会在加载时间过长时崩溃。 我知道 activity 在 OnResume 完成之前不会显示。

那么调用时间在 OnResume 中进行操作而不是在 OnCreate() 方法中进行所有初始化是一种好方法吗?

So is it a good approach to call time taking operations in OnResume instead of having all initialization in OnCreate() method?

否 - 您不应在 OnCreate 或 OnResume 中执行此操作。您应该始终在工作线程内执行此操作——例如 AsyncTask。

任何需要很长时间才能完成的操作,如果在 UI 线程上执行,将阻塞消息队列 - 这意味着 UI 小部件没有重绘,用户无法点击您的应用程序来完成任何事物。在您的操作完成之前,一切都被阻止。 ~5 秒后 Android 生成 ANR(应用程序未响应)并终止您的应用程序。

你不应该在主线程上做IO操作。这包括 onCreateonResume 方法,它们将始终在主线程上调用。

要正确加载数据,您应该使用 AsyncTaskContentLoader 及其回调。

一般来说,要在您的应用程序中使用数据库,您应该使用 ContentProviderCursorLoader。有很多关于如何使用它们的教程,它使您的代码更易于管理。