1

そのアクティビティから起動されたサービスは新しいスレッドで実行されますか?

this.startService(new Intent(this,UpdaterService.class)); 

のようにその活動から初めてサービスを起動すると、このサービスは、新しいスレッドで実行されるのでしょうか? そして、私はこのサービスに重い作業負荷をかけると(スレッドの助けを借りずに)、このアプリケーションのためにアンドロイドが強制終了を表示しますか?

スレッドクラスからのAsyncTaskクラスの違いは何ですか? どちらを使うの?

ありがとうございました。

答えて

2

Android developer manual reads

  • Serviceは独立したプロセスではありません。 Serviceオブジェクト自体は ではありません。それは、それ自身の プロセスで実行されていることを意味します。特に明記しない限り、 は、それが含まれている アプリケーションと同じプロセスで実行されます。
  • Serviceはスレッドではありません。 は、 メインスレッドの処理を行う手段ではありません(Applicationを避けるために、 の応答エラー)。
+0

okサービスがスレッドでもプロセスでもない場合はどうですか? –

+0

@jason _Aサービスは、ユーザーと対話していない状態で長時間実行するアプリケーションの希望を表すアプリケーションコンポーネントです。** RTFM ** – barmaley

1

サービスは別のプロセスで実行されています。サービスはユーザーインターフェイスのないアプリケーションです。 AsyncTaskは、別のスレッドでいくつかの作業を行い、UIスレッドと同期させるのに役立つヘルパークラスです。たとえば、ユーザーに現在の進捗状況を示すことができます。このタイプの同期が必要なときにAsyncTaskを使用することはできますが、一般的にこれらのいずれかを使用する場合に大きな違いはありません。お役に立てれば。

関連する問題