Androidプロセス間通信(IPC)
1862 ワード
マルチプロセスの設定方法
AndroidManifest.xmlで
一般的なプロセス間通信方式
BundleはIntentを通じてデータ、ファイル共有、ContentProvider、BinderベースのAIDL、Messenger、Socketを伝達します.
一、Activity
Intentを介してプロセス間で他のプロセスページを起動し、Bundleを介して値を転送します.
二、Content Provider
Androidアプリケーションは、ファイルまたはSqlLiteデータベースを使用してデータを格納できます.Content Providerは、複数のアプリケーション間でデータを共有する方法(プロセス間でデータを共有する方法)を提供します.アプリケーションはContent Providerを使用して、削除・変更の作業を完了できます.
三、Broadcast
ブロードキャストは、プロセス間で受動的に通信する方法です.あるプログラムがシステムにブロードキャストを送信すると、他のアプリケーションはブロードキャストデータを受動的に受信するしかない.
四、サービス
(一)AIDL
AIDLはC/Sアーキテクチャを採用し、サービス側とクライアントに分けられる.
サービス側サービス側は、接続するプロセスです.彼はクライアントにサービスを提供して、このサービスの中でクライアントの接続要求を傍受して、それからAIDLインタフェースファイルを作成して、中は実現する方法で、この方法がクライアントに露出していることに注意します.最後にこのAIDLインタフェースをサービスで実現すればよい(ここではインタフェースの具体的な実装である).サービス側の職責は、接続と自身を提供することです.
クライアントクライアントはまずサービス側のサービスをバインドする必要があり、バインドに成功した後、サービス側から返されるBinderオブジェクトをAIDLインタフェースが属するタイプに変換し、最後にAIDLを呼び出す方法でよい.クライアントは接続と呼び出しを担当します.
AIDLがサポートするデータ型は基本データ型(int,long,char,boolean,double,float,byte,short) StringおよびCharSequence List:ArrayListのみをサポートし、その中の各要素はAIDLによって をサポートしなければならない. Map:HashMapのみをサポートします.同様に、keyとvalue を含む中の要素はAIDLにサポートされなければなりません. Parcelable:Parcelableインタフェースを実装すべてのオブジェクト AIDL:すべてのAIDLインタフェース自体もAIDLファイルで を使用することができる.
(二)Messenger
Messengerの本質もAIDLであり,パッケージ化されているだけである.MessengerがClient側の要求を処理するのは単一スレッドであり、AIDLはマルチスレッドである.Clientの方法では,AIDLを用いて戻り値を取得するのは同期であり,Messengerは非同期である.
(三)Socket
https://blog.csdn.net/hzw2017/article/details/81210979
AndroidManifest.xmlで
android:process=":remote"
(1)android:process=":remote"
を構成すると、アプリケーションで新しいプロセスが自動的に作成されることを示します.(2)android:process="remote"
は、グローバルプロセスを作成し、異なるアプリケーションがそのプロセスを共有する.一般的なプロセス間通信方式
BundleはIntentを通じてデータ、ファイル共有、ContentProvider、BinderベースのAIDL、Messenger、Socketを伝達します.
一、Activity
Intentを介してプロセス間で他のプロセスページを起動し、Bundleを介して値を転送します.
Intent intent = getPackageManger().getLaunchIntentForPackage(" ");
二、Content Provider
Androidアプリケーションは、ファイルまたはSqlLiteデータベースを使用してデータを格納できます.Content Providerは、複数のアプリケーション間でデータを共有する方法(プロセス間でデータを共有する方法)を提供します.アプリケーションはContent Providerを使用して、削除・変更の作業を完了できます.
三、Broadcast
ブロードキャストは、プロセス間で受動的に通信する方法です.あるプログラムがシステムにブロードキャストを送信すると、他のアプリケーションはブロードキャストデータを受動的に受信するしかない.
四、サービス
(一)AIDL
AIDLはC/Sアーキテクチャを採用し、サービス側とクライアントに分けられる.
サービス側サービス側は、接続するプロセスです.彼はクライアントにサービスを提供して、このサービスの中でクライアントの接続要求を傍受して、それからAIDLインタフェースファイルを作成して、中は実現する方法で、この方法がクライアントに露出していることに注意します.最後にこのAIDLインタフェースをサービスで実現すればよい(ここではインタフェースの具体的な実装である).サービス側の職責は、接続と自身を提供することです.
クライアントクライアントはまずサービス側のサービスをバインドする必要があり、バインドに成功した後、サービス側から返されるBinderオブジェクトをAIDLインタフェースが属するタイプに変換し、最後にAIDLを呼び出す方法でよい.クライアントは接続と呼び出しを担当します.
AIDLがサポートするデータ型は
(二)Messenger
Messengerの本質もAIDLであり,パッケージ化されているだけである.MessengerがClient側の要求を処理するのは単一スレッドであり、AIDLはマルチスレッドである.Clientの方法では,AIDLを用いて戻り値を取得するのは同期であり,Messengerは非同期である.
(三)Socket
https://blog.csdn.net/hzw2017/article/details/81210979