0

私はEclipseを使用しており、アンドロイド用にプログラミングしています。AsyncThread は UI とやり取りできますか。バックグラウンド スレッドにこのコードがあり、例外がスローされます。

if (pressTime == 0){
    displayTime.setText("You missed your ring");
}
4

2 に答える 2

3

実際にビューを作成したスレッド (通常は UI スレッド) のみがビューを変更できます。UI に反映させたい変更を UI スレッド キューにポストする必要があります。通常、あなたのコンテキストではアクティビティです。これは で達成されrunOnUiThreadます。それ以外の場合は、 と を使用できますHandler

ここに runOnUiThread のドキュメントがあります。ハンドラーについてはこちら。

于 2013-10-12T12:22:38.557 に答える
1

を使用できますHandler。UI スレッドで作成し、非同期スレッドから呼び出しを投稿するだけです。

たとえば、 を使用している場合はAsyncTask、次のグローバル変数を追加するだけです。

Handler mHandler;

次に、タスクのコンストラクターまたはonPreExecuteメソッドで、次の行を追加します。

mHandler = new Handler();

最後に、上記の行がUI Threadで呼び出されている限りdoInBackground、次を使用してメソッド内の前述の Thread でコードを実行できます。

mHandler.post(new Runnable() {
    @Override
    public void run() {
        if (pressTime == 0)
            displayTime.setText("You missed your ring");
    }
});
于 2013-10-12T13:06:09.597 に答える