1

私のアクティビティには多くの非同期タスクがあり、非同期を行うには呼び出しごとに AsyncTask をオーバーライドする必要があります。

すべての AsyncTasks を BoundService + AIDL に置き換えることはできますか、それとも AsyncTask のみで行う必要がありますか?

4

2 に答える 2

2

サービスはバックグラウンドで実行されていますが、メイン スレッド (AKA. UI スレッド) で実行されている場合、ANR 例外が発生します。ここのAPIによると:

Service クラスに関するほとんどの混乱は、実際にはそれがそうでないものに関係しています。

  • サービスは個別のプロセスではありません。Service オブジェクト自体は、それが独自のプロセスで実行されていることを意味しません。特に指定がない限り、アプリケーションと同じプロセスで実行されます。
  • サービスはスレッドではありません。それ自体は、メイン スレッドから離れて作業を行う手段ではありません (アプリケーションが応答しないエラーを回避するため)。

サービスを使用できますが、別のスレッドで何かを実行する場合は、サービスまたはアクティビティにスレッド ロジックを実装する必要があります。

于 2011-10-18T20:31:38.743 に答える
2

サービスはデーモン、AsyncTask はバックグラウンド スレッド

于 2013-03-12T10:26:00.123 に答える