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 件のコメント:
コメントを投稿