当我的Android应用程序启动时,需要在第一次加载的活动中的onCreate期间从数据库加载大量数据。我想为此展示一个ProgressDialog。但是ProgressDialog无法在主线程中显示,因此必须使用AsyncTask或新线程。但这也意味着,随着主要线程的继续,活动将继续初始化。
基本上,我需要在主线程(而不是AsyncTask)中处理时显示ProgressDialog或其等价物。
有办法吗?
答案 0 :(得分:1)
Main/UI
线程负责绘制UI,因此负责ProgressDialog
本身。因此,您无法阻止它,并希望他将绘制UI。您应该在AsyncTask
的{{1}}内移动初始化内容,然后在调用 doInBackgroud
后继续使用其他后缀
答案 1 :(得分:1)
您将永远无法显示进度,因为您的活动视图尚未创建,因为您在读取数据库onCreate方法finshes后读取onCreate方法中的数据库,现在您的视图会膨胀等等。 。
答案 2 :(得分:1)
您应该使用Thread(ASyncTask)加载数据,您应该使用“onPreExecute()”显示您的ProgressDialog,并使用“onProgressUpdate()”更新它,并使用“onPostExecute()”完成对话,所有这些都在运行UI线程已经。
答案 3 :(得分:1)
然而,ProgressDialog无法在主线程中显示,因此必须使用AsyncTask或新线程。
你是如何得出这个结论的?所有UI内容都显示在UI线程中,因此也显示在ProgressDialog中。需要在UI线程内创建和调用它才能工作,否则你的应用程序崩溃。
首先你需要检查onCreate(),如果你的东西已经加载,如果没有,显示ProgressDialog,在后台加载东西,然后在UI线程中发帖以关闭ProgressDialog并显示结果。 / p>
它通常如何运作。