Android中的OnResume()是否使活动加载更快?

时间:2015-12-26 09:45:58

标签: android android-lifecycle android-database

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

在开发的早期阶段,我曾经在OnCreate()方法中从数据库中检索数据,当数据变得庞大时,它确实减慢了活动的开始。所以我调用了数据的检索并在OnResume()方法中在屏幕上查看它,这样我的应用程序就不会在加载太长时间时崩溃。 我知道直到OnResume完成才会显示活动。

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

2 个答案:

答案 0 :(得分:3)

  

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

不 - 您不应该在OnCreate或OnResume中执行此操作。你应该总是在工作线程中做 - 比如AsyncTask。

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

答案 1 :(得分:1)

您永远不应该在主线程上执行IO操作。这包括onCreateonResume方法,这些方法将始终在主线程上调用。

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

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