2013年9月1日日曜日

それいけBinder

ContentProviderはBinderをimportしている。

先の記事でちらっとでてきたかもしれないけど、
ContentProviderはContentProviderNativeをextendsしたTransPortというクラスをもっている。

ContentProviderNativeってのがBinderをextendsしてる。
で、ContentProviderクラスではTransportというクラスで内包している。
class Transport extends ContentProviderNative

はて?Binderってなんだっけ?
Bindっていうservice発行の仕組みはあったと思うけど、Binderではないんだよな。

ちょろっと検索したら以下の記事がありました。
AndroidのBinderによるプロセス間のメソッド呼び出し(メモ)
記事の日時は2011年03月17日なのでもしかしたらAndroid自体の内容が変わっている箇所があるかもしれません。

内容としては、IBinderというインターフェイスでActivityのプロセスが開始されているというものでした。
実行しているコアプロセスとは違うプロセスとしてActivityがスタートされ、IBinderが両プロセス間の通信を実現しているという感じですね。

なるほど。やはりサービス絡みでした。
となると、呼び出したプロセスのスレッドに対してサービスの結果を返してるということになるのかな。

んーとなると、UIスレッドに書けるけど、Activityの影響を受けにくいところに結果を出してあげるべきなのかな。ノーティフィケイションとか使ってね☆ミとSDKのどこかで言われてたような気がする。
でもノーティフィケイションに出すと通知が溜まりまくるような。。。

0 件のコメント:

コメントを投稿