5

インタビューの質問 : アプリケーションでは、アクティビティとサービスは同じプロセスで実行されますか、それとも異なるプロセスで実行されますか? 私の答えは ::: 同じプロセスでした。

次の質問 ::: もしそうなら、アクティビティとサービスが同時に実行されるのはどうしてですか? 私の答えは ::: オペレーティング システムが実行を処理します。(率直に言って、私は答えを知りませんでした)。

誰かが上記の質問について説明できますか? 私の答えが間違っていた場合、正しい答えは何ですか?

4

3 に答える 3

5

サービスとアクティビティがアプリに属している場合:

特に定義されていない場合は同じプロセス。別のプロセスで実行されるサービスを作成できます。

Service と Activity は同じスレッドを共有します。したがって、同時に実行することはできません。ただし、Service でコマンドを処理する新しいスレッドを作成できます。または、独自のスレッドですべてのコマンドを処理する IntentService を使用します。一部のサービス メソッドは常に UI スレッドで実行されます (onCreate など)。その後、アクティビティとサービスを並行して実行できます (2 つ以上のコアがある場合 =)。

于 2013-02-08T08:27:18.160 に答える
4

カスタマイズに応じて、両方とも同じプロセスまたは異なるプロセスで機能します。はい、OSはこれら2つの実行を担当しています。詳細な説明については、これを確認してください: http://developer.android.com/guide/topics/manifest/service-element.html#proc

于 2013-02-08T08:25:28.127 に答える
1

同じプロセス (デフォルトの動作) で実行されるアクティビティとサービスを同時に開始する方法はありません。

Service の onCreate() メソッドは、メイン (UI) スレッドで実行されます。

アクティビティの onCreate() メソッドもメイン (UI) スレッドで実行されます。

両方をほぼ同時に開始する唯一の方法は、サービスを別のプロセスで実行することです。

いくつかのスレッドを起動して、セマフォをバリア フラグとともに使用することができます。

于 2013-02-08T08:23:39.893 に答える