长时间运行的进程在单独的线程更新UI



我注意到。NET也有类似的问题,但我的问题是针对Android的,所以也许解决方案看起来不同。

通过单击按钮激活该过程。该进程作为UI线程的一部分运行,并在最后更新UI。为了更方便用户使用,我添加了进度对话框,所以我实例化了一个运行进程的线程,最后它更新UI并取消进度对话框。不幸的是,UI更新失败,异常如下:

07-19 21:14:04.602: ERROR/Atjeews(283): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

如果我试图阻塞UI线程并在长进程完成后释放它以更新UI,则不会显示进度对话框。我应该尝试在单独的线程中显示进度对话框,还是有另一个更简单的解决方案?

请查看http://developer.android.com/resources/articles/painless-threading.html

摘自Android Developers Processes and Threads页面:

为了解决这个问题,Android提供了几种从其他线程访问UI线程的方法。以下是可以提供帮助的方法列表:

Activity.runOnUiThread(可运行)View.post (Runnable)
视图。postDelayed (Runnable,长)

你可以实例化一个匿名的Runnable作为参数,比如post(new Runnable(){doWhatever();}),它会在UI线程上做任何你想做的事情。

相关内容

  • 没有找到相关文章

最新更新