2

非同期処理を行う必要がある場合、これをサービス (インテント サービスなど) に組み込むことが推奨されることがよくあります。偉大な。ただし、サービスからアクティビティを開始することもお勧めしません...そのため、非同期応答がサービス内に戻ってきた場合、ユーザーは別の画面にいる可能性があります。次に、それらはサービスへのバインディングの全体的な側面です...どちらの方法が優れているのか、そしてその理由は何なのか疑問に思う人がいます。サービスはクールですが、サービス呼び出しへのバインドがあり、サービスがアクティビティへのコールバックを持たないという問題もあります。では、どの方法が良いか。AsyncTask と Service を使用して非同期作業を行う基準は何ですか? また、 requestForResult() オプションもあります...

4

1 に答える 1

3

基準は基本的に、

  1. アプリケーションのアクティビティが実行されなくなった場合でも、一部のデータを定期的に更新したり、一部のタスクを続行したりする必要がありますか? サービスのご利用はこちら。

  2. データまたは一部のタスクを複数のアプリケーションで実行する必要がありますか? このような場合、アプリケーションはサービスにバインドして情報にアクセスする必要があります。

  3. IPCが関与しているケースはありますか? サービスをご利用ください。

  4. データのダウンロードや、時間のかかるキック アス アルゴリズムなどの重いタスクを実行するだけでよい場合はありますか? 重いタスクはすべてバックグラウンド スレッドで実行し、完了したら UI を更新します。AsyncTask を使用します。

Asynctask は単純です。主にアクティビティで使用され、ANR を回避するために別のスレッドで重いタスクを実行します。

一方、サービスは、アプリが実行されていないときでも実行する必要があるタスクを実行するために使用されます。他のアプリはデータを更新するためにバインドする必要があり、アクティビティを表示する前に更新されたデータが必要です。

他にも基準があると思いますが、これらは私が思いついたほんの一部です。

于 2012-04-13T04:57:34.237 に答える