13

アクティビティの変数をAsyncTaskの結果に設定しようとしています。変数を返すことができず、アクティビティで変数を設定してから、onPostExecuteメソッドで変数を変更する必要があることを読みました。

私の問題は、AsyncTaskが終了した後、その変数を使用する必要があることです。これまでに試したすべての解決策により、UIがフリーズし、応答しなくなるため、これに問題があります。

私がこれまでに試したこと:

while (!task.isCancelled()) {
    // Wait... 
}

while (variable == null) { 
    // Wait ...
}

AsyncTaskからアクティビティに変数を渡すための最善の方法は何ですか?その場合、UIをロックせずに、タスクがアクティビティで終了するのをどのように待つことができますか?

4

2 に答える 2

53

AsyncTaskの結果に依存している場合は、これを行うことができます。

Object result = asyncTask.execute().get();

結果の型は、doInBackground()メソッドの戻り型です。ただし、メインスレッドはタスクが完了するまで待機します。

于 2012-12-26T21:27:59.737 に答える
13

変数が変更された後に実行するコードを関数に入れて、onPostExecuteからこの関数を呼び出すだけです。

于 2012-12-26T21:21:47.083 に答える