インタビューの質問 : アプリケーションでは、アクティビティとサービスは同じプロセスで実行されますか、それとも異なるプロセスで実行されますか? 私の答えは ::: 同じプロセスでした。
次の質問 ::: もしそうなら、アクティビティとサービスが同時に実行されるのはどうしてですか? 私の答えは ::: オペレーティング システムが実行を処理します。(率直に言って、私は答えを知りませんでした)。
誰かが上記の質問について説明できますか? 私の答えが間違っていた場合、正しい答えは何ですか?
サービスとアクティビティがアプリに属している場合:
特に定義されていない場合は同じプロセス。別のプロセスで実行されるサービスを作成できます。
Service と Activity は同じスレッドを共有します。したがって、同時に実行することはできません。ただし、Service でコマンドを処理する新しいスレッドを作成できます。または、独自のスレッドですべてのコマンドを処理する IntentService を使用します。一部のサービス メソッドは常に UI スレッドで実行されます (onCreate など)。その後、アクティビティとサービスを並行して実行できます (2 つ以上のコアがある場合 =)。
カスタマイズに応じて、両方とも同じプロセスまたは異なるプロセスで機能します。はい、OSはこれら2つの実行を担当しています。詳細な説明については、これを確認してください: http://developer.android.com/guide/topics/manifest/service-element.html#proc
同じプロセス (デフォルトの動作) で実行されるアクティビティとサービスを同時に開始する方法はありません。
Service の onCreate() メソッドは、メイン (UI) スレッドで実行されます。
アクティビティの onCreate() メソッドもメイン (UI) スレッドで実行されます。
両方をほぼ同時に開始する唯一の方法は、サービスを別のプロセスで実行することです。
いくつかのスレッドを起動して、セマフォをバリア フラグとともに使用することができます。