2011-02-06 2 views
1

Androidサービスをリモートプロセスで実行すると、それが別のスレッドで実行されていることを意味しますか?それはローカルサービスとリモートサービスの違いですか?Androidリモートサービス

同様に、IPC経由でリモートサービスを呼び出す場合、すぐに戻りますか?それとも、行動が完了するのを待っていますか?

答えて

8

Androidサービスをリモートプロセスで実行すると、それが別のスレッドで実行されていますか?

スレッドはプロセスによって所有されているため、別のプロセスでサービスを使用すると、他のプロセスで使用されているスレッド以外のスレッドが使用されます。

ローカルサービスとリモートサービスの違いはありますか?

通常、「リモートサービス」は別のアプリケーションによって提供されるサービスです。

同様に、IPC経由でリモートサービスを呼び出すと、すぐに戻りますか?それとも、行動が完了するのを待っていますか?

コールは同期です。コールは同期している必要があります.AIDLメソッドは結果を返すことができます。クライアントがAIDL定義のメソッドを介してサービスを呼び出すと、どちらのプロセスやスレッドが使用されているかにかかわらず、クライアントはサービスが戻るまでブロックします。

1

Androidのサービスは、活動などと同じスレッドで実行し、デフォルト、こと:「他のアプリケーションオブジェクトのようなサービスは、そのホストプロセスのメインスレッドで実行することに注意してください」

ref

ローカルサービスとは、コンパイル時に同じアプリケーション内の他のコンポーネントによって使用されるサービスです。他のオブジェクトと同じようにサービスのメソッドを呼び出すことができます。

リモートサービスは、AIDLを介して呼び出されているサービスであり、コンパイル時の関係は必要ありません。

0

同様に、IPC経由でリモートサービスを呼び出す場合、すぐに戻りますか? またはアクションが完了するのを待っていますか?

CommonsWareが指摘しているように、呼び出しは同期していますが、リモートサービスの一般的なパターンは、リモートサービスがクライアントに非同期で通知するコールバックを使用することです。

このような例は、Androidのdocs:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html

にあります
関連する問題