0

我注意到 dot 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 的长时间过程后释放它,则不会显示进度对话框。我应该尝试在单独的线程中显示进度对话框,还是有另一个更简单的解决方案?

4

2 回答 2

1

取自 Android 开发者进程和线程页面:

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

Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)

您可以将匿名 Runnable 实例化为参数,例如post(new Runnable(){doWhatever();}),它将在 UI 线程上执行您想要的任何操作。

于 2011-07-20T05:51:16.457 回答
1

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

于 2011-07-20T05:48:20.390 回答