『Android開発芸術探索』AndroidにおけるIPC方式--未完

1509 ワード

1.Bundleの4つのコンポーネントのうち3つのコンポーネント(Activity、Service、Receiver)を使用すると、BundleでBundleデータを転送することができます.BundleはParcelableインタフェースを実現しているため、Bundleにリモートプロセスに転送する必要がある情報をIntentで送信することができます.もちろん、私たちが転送したデータはシーケンス化されなければなりません.
       :A         ,         B                B  ,        Bundle  Intent   。

       :    Intent    B   Service  (  IntentService), Service       ,        B             ,  Service    B   ,                 。

2.ファイル共有ファイル共有を使用するのも良いプロセス間通信方式で、2つのプロセスは同じファイルを読む/書くことでデータを交換します.例えば、Aプロセスはデータをファイルに書き、Bプロセスはこのファイルを読むことでデータを取得します.
    +    
     :
ObjectOutputStream=new ObjectOutputStream(new FileOutputStream(cachedFile));
objectOutputStream.writeObject(user)
      :
ObjectInputStream=new ObjectInputStream(new 
FileInputStream(cachedFile));
 user=(User)objectInputStream.readObject();

特例
SharedPreferenceは例外であり、ファイルの一種でもあるが、システムはその読み取り/書き込みに一定のキャッシュポリシーを持っているため、メモリにSharedPreferenceファイルのキャッシュがあるため、マルチプロセスモデルの下で、システムはその読み取り/書き込みが信頼できなくなり、同時の読み取り/書き込みアクセスが高い場合、SharedPreferenceはデータを失う可能性が高い.したがって、プロセス間通信でSharedPreferenceを使用することは推奨されません.
3.Messenger Messengerを使用するのは軽量級のIPC方式であり、その下層実装時AIDL.Messengerを実装するには、次の手順に従います.
  • サービス側プロセスクライアントの接続要求を処理するためにサービス側にサービスを作成し、Handlerを作成してMessagerオブジェクトを作成し、サービス側のonBindでMessengerオブジェクトの最下位のBinderを返す必要があります.
  • クライアントプロセス