先に述べたとおり、
ContentResolverを使ったSQLステートメントの実行はBinderを使ったプロセス間通信です。
Appプロセス⇔DB
ではなく、
Appプロセス→コアプロセス→DB→コアプロセス→Appプロセス
です。
これを排他的に非同期にキューイングされた状態を作り、且つプロセス間通信として確立したい。
いや、そんな別に意気込んでやんなくてもいいと思うんですよ。
でもね、どこでどういう方法で何をやっているかを明記するほうが僕はいいと思うんですよ。
流儀の問題だと思います。
まーでも、webにある情報ではだいたいUi上で書いてしまっているのが現状です。
間違った記述であると言わなければいけません。
スレッドに移して書いてる場合もあります。これも間違った記述であると言わなければいけません。
CursorLaoaderの実装を見ると、new ForceLoadContentObserver()というのをしています。
コールバックを内包しているわけですね。
これにより状態を検知しています。
なので、コールバック作りましょう。
それと起動しているActivityのスレッドプールではなく、Activityを起動しているスレッドプールを使いましょう。
そしてプロセス間通信となるサービスを発行してSQLの発行と結果の受け取りを行いましょう。
0 件のコメント:
コメントを投稿