【问题标题】:Android Layout not showingAndroid 布局未显示
【发布时间】:2012-11-25 19:48:03
【问题描述】:

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

【问题讨论】:

    标签: android layout oncreate


    【解决方案1】:

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

    因此,您应该始终在单独的线程中运行耗时的任务。请参阅 android 开发者博客中关于 无痛线程 的优秀条目,了解更多信息并正确操作:

    【讨论】:

    • 谢谢。我真的没有意识到这一切(我还是新手)。链接的文章真的很有趣,有什么地方可以让我在访问我的数据库和共享首选项的同时查找如何实现异步?
    • 想出了如何让它工作。你们都说了同样的话,但你提供了更多的信息。谢谢 :) 非常感谢您的帮助!
    【解决方案2】:

    使用AsyncTask,在onPreExecute 中显示进度对话框并在onPostExecute 中关闭,在doInBackground 中准备您的数据库。

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

    【讨论】:

    • 我看到我必须实现AsyncTask。我阅读了文档,但是我不确定如何使用它来访问和写入 SQLite 数据库。有没有机会提供一些见解?
    • @user1676486 你可以将你的 sql 或任何其他操作放入 doInBackground() 中,只要它们不接触 UI 即可
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多