【问题标题】:Android: Possible to create ProgressDialog without using Thread?Android:可以在不使用线程的情况下创建 ProgressDialog?
【发布时间】:2011-07-22 07:21:04
【问题描述】:

我有一个 ListActivity,它在 onCreate() 期间从数据库加载数据。是否可以在不使用线程的情况下显示 ProgressDialog?使用线程似乎禁用了 ListActivity 的 onListItemClick 方法。但也许我做错了什么。我还在我的 listactivity 中对项目进行了延迟加载,因此列表使用 onScroll 一次加载 10 个项目。

感谢任何帮助或指导:)

【问题讨论】:

    标签: android multithreading progressdialog


    【解决方案1】:

    ProgressDialog 始终在UI thread 上运行,因此您不需要任何额外的线程来创建它。线程用于长时间运行的操作,可能持续超过 5 秒,导致阻塞 UI 线程会触发 ANR 错误。如果您确定加载过程不会花费 5 秒,您可以在 UI thread 上直接显示 ProgressDialog(或 ProgressBar,我觉得更好,因为它不会阻止您的用户使用您的应用程序)。如果加载可以持续更长时间,您应该考虑实现一个单独的线程来处理这个过程。希望这会有所帮助。

    【讨论】:

    • 感谢您的回答。我认为我不能确定它不会超过 5 秒。但是当我试图将项目加载到一个单独的线程中时,一旦我滚动我的列表,onListItemClick 就不会执行。您或许知道其中的原因吗?
    • @ashv,不应该这样,好像你在某个地方犯了错误。一般建议使用 AsyncTask,它是解决 Android 中此类问题的经典方法。
    • 啊,好吧。我是 android 开发的新手,所以你可能是对的:) 你知道我可以看看 AsyncTask 的任何教程吗?
    • @ashv,这是一个好帖子,你应该看看它:developer.android.com/resources/articles/…
    • 请不要将 UI 线程用于任何本地或网络 I/O 操作。随着数以百万计的 Android 设备的出现,即使是最小的数据传输遇到退化的情况,即这需要很长时间并且导致 ANR。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2012-10-27
    • 2014-06-16
    相关资源
    最近更新 更多