ストック カレンダー アプリのソース コードを見ると、Google は IntentService を使用してデータベースのコンテンツ プロバイダー操作を行っています。AsyncQueryHandler ではなく IntentService を使用する利点はありますか?
Handler は UI に関連付けられているため、アクティビティが一時停止または停止すると、Handler も一時停止されると思いました。しかし、これは当てはまらないようです。単純なコンテンツ プロバイダーと AsyncQueryHandler を作成しましたが、これらは長い for ループを実行するだけです。他のアプリを起動したり、アクティビティを強制終了したりしても、for ループは引き続き実行されます。
では、非同期 CRUD 操作に IntentService を使用する利点は、(サービスである) サービスが強制終了される可能性が少ないということですか?
更新: 私の混乱の一部は、ハンドラーがアクティビティのライフサイクルにどのように関係しているかです。私の実験から、それは独立しているようです。
また、ストック カレンダー アプリのソース コードに慣れていない方のために説明すると、CRUD を実行する方法は、ハンドラーへの参照と共に操作をキューに追加することです。次に、キューをポップして CRUD を実行するインテント サービスを開始します。完了すると、Message.sendToTarget() を介してハンドラーを呼び出します。
では、その余分な複雑さによって何が得られるのでしょうか?