Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android布局未显示_Android_Layout_Oncreate - Fatal编程技术网

Android布局未显示

Android布局未显示,android,layout,oncreate,Android,Layout,Oncreate,当我的测验应用程序第一次启动时,它需要将问题添加到数据库和其他一些东西,这需要几秒钟的时间。发生这种情况时,我想显示一个不确定的进度条。添加问题后,类调用finish()并转到主屏幕。问题是除非未调用finish,否则不会绘制布局。我假设它在调用oncreate和onstart之后才绘制XML布局。那么我该如何解决这个问题呢?在其onPreExecute中使用、显示进度对话框,并在onPostExecute中关闭,在doInBackground中准备数据库 除非您使用DialogFragment

当我的测验应用程序第一次启动时,它需要将问题添加到数据库和其他一些东西,这需要几秒钟的时间。发生这种情况时,我想显示一个不确定的进度条。添加问题后,类调用finish()并转到主屏幕。问题是除非未调用finish,否则不会绘制布局。我假设它在调用oncreate和onstart之后才绘制XML布局。那么我该如何解决这个问题呢?

在其
onPreExecute
中使用、显示进度对话框,并在
onPostExecute
中关闭,在
doInBackground
中准备数据库


除非您使用DialogFragment来显示对话框,否则您必须处理设备旋转。

原因是,在填充数据库时未显示UI,可能是因为您在UI线程(应用程序的主线程)中执行此操作。由于线程正忙于填充数据库,因此没有时间显示UI、设置进度指示器动画或对用户操作作出反应

因此,您应该始终在单独的线程中运行耗时的任务。请参阅android devloper博客中关于无痛线程的这篇精彩文章,了解更多信息并正确操作:


谢谢。我真的没有意识到这一切(我还是个新手)。这篇链接文章真的很有趣,有没有一个地方可以让我在访问我的数据库和SharedReferences的同时查找如何实现异步?找到了如何让它工作的方法。你们都说了同样的话,但你们提供了更多的信息。谢谢:)非常感谢你的帮助!我知道我必须实现异步任务。我阅读了文档,但是我不知道如何使用它访问和写入SQLite数据库。您是否有机会提供一些见解?@user1676486您可以将sql或任何其他操作放入doInBackground()中,只要它们不触及UI