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

http://developer.android.com/resources/articles/painless-threading.htmlを確認してください

于 2011-07-20T05:48:20.390 に答える
1

Android Developers Processes and Threadsページから取得:

この問題を解決するために、Android には、他のスレッドから UI スレッドにアクセスする方法がいくつか用意されています。役立つメソッドのリストを次に示します。

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

のように、匿名の Runnable を引数としてインスタンス化するだけで、post(new Runnable(){doWhatever();})代わりに UI スレッドで必要なことを実行できます。

于 2011-07-20T05:51:16.457 に答える