2011-07-27 10 views
4

AsyncTaskを使用してバックグラウンドでいくつかの作業を実行するAPIが1つのjarファイルにあります。私は結果が返されるのを待ってから、この結果でもう少し勉強しなければなりません。AsyncTask - 更新された値を使用する前にonPostExecute()が完了するのを待つ方法

私はonPostExecute()メソッドで1つのクラスに信号を送り、結果はUIスレッドで処理されますが、ハンドラは別のプロジェクトでコールバックとして定義する必要があります。 onPostExecuteで指定します。

2番目のプロジェクトでは、AsyncTaskが終了して応答が処理されるまで待つ必要があるため、ハンドラの結果を2番目のプロジェクトのアクティビティのTextViewに表示する必要があります。

ハンドリングがUIスレッドで行われるため、Thread.sleepとCountDownLatchを使用すると機能しません。そんなことをする方法はありますか?

答えて

2

私が正しく理解している場合、別のjarで更新する必要がある1つのjarとUIにAsyncTaskがあります。アプリケーションを1つのアプリケーションとして実行する場合は、そのアプリケーションがどこにあるかは関係ありません。いくつかのコールバックが含まれていると述べたので、onPostExecuteでこのコールバックを実行することができます。

以下は、ジャー2から

  • アクティビティ非同期タスクを作成し、
  • AsyncTask店舗
  • 可変インスタンスでコールバックコンストラクタにパラメータとして TextViewを更新する方法を知っているコールバックを通過するイベントのおおよその順序であろう
  • アクティビティが実行されますAsyncTask
  • AsyncTaskonPostExecute適切なパラメータを持つコールバックでコールするメソッド
  • コールバックの更新
+0

こんにちは、アレックスTextView、あなたの迅速かつ有用な回答のため どうもありがとうございました。残念ながら(私の悪いことを正しく説明していない、それについて申し訳ありません)これは私のケースでは実際にコールバックハンドラをテストするためにこのTextViewを使用しているので、正しく動作しません。だから問題は本当に私はコールバックのTextViewへの参照を持つことができないと思います。可能であれば、TextViewを更新するための戻り値を '引き出す'必要があり、これらを別々に保つ必要があります。このような状況の中でどのような考えがありますか?質問を明確にするのを手伝ってくれてありがとう:-) –

+0

「Messenger」を試すことができます。私はここにリンクを追加したいが、Androidのサイトはダウンしているようだ。 –

+0

メッセンジャーjavadoc:http://developer.android.com/reference/android/os/Messenger.html –

関連する問題