1

次の状況を実装するための提案が必要です。

で実行する必要のない2つの長時間実行操作(SQLite DBとネットワーク操作)間のダイアログを表示しUI Threadます。

どのダイアログが表示されるかは、最初のロングラン操作の結果によって異なりますが、2番目のロングラン操作が実行されるかは、ダイアログでユーザーが選択したオプションによって異なります。私はこれを作るために2つAsynTask(以下のように)を使用しましたが、プログラムの流れは非常に厄介です。

これをより簡単にするための提案はありますか?

  1. UIスレッドはAsynTaskAT1を呼び出します
  2. AT1 doInBackGround()は長時間実行操作を実行します1
  3. AT2onPostExecuteはダイアログを表示します
  4. UIスレッドは(コールバックメソッドを使用して)ダイアログの結果を処理し、AsynTaskAT2を呼び出します
  5. AT2 doInBackGround()は長時間実行操作2を実行します
  6. AT2onPostExecuteはUIを変更します。
4

1 に答える 1

1

独自の AsyncTask を使用して個別のサービスで各タスクを実行し、それらの結果を UI スレッドの Handler に送信させることができます。

ハンドラーには、入力の処理方法を決定するロジックが含まれている必要があります。

通信は、メッセージまたは作成した新しい Parcellable を介してバンドルを経由する必要があります。

これらの操作が長い場合は、ユーザーがダイアログを閉じてグローバルに通知することを考慮する必要があります [アプリケーションまたは通知バーから]

于 2013-01-09T08:36:35.650 に答える