

レシーバーで通知受信時にサービスを立ち上げてステータスバーに通知を出す処理を定義しています。  
ただ、実際にステータスバーに通知を出すかどうかは サービス内で SQLite を用いて判断します。

現在は サービスに一応 static で SQLite を保持しており、  
onStartCommand で null だったらデータベースをインスタンス化しております。  
また、 onDestroy にて毎回クローズしています。

とは言え、サービスは毎回終了する度に onDestroy がコールされると思うので  
実質１通知を処理するのに毎回 データベースを読み込んでいるかと思います。

データベースのレコードはアプリ起動時に毎回最適化しているのでせいぜい平均５０程度と殆ど負荷にはならないかと思いますが、それでも効率が悪いのには変わりありません…  
トークアプリのため、通知はたくさん来ます。

SQLiteはネイティブで保持されているとのことで、closeしないことも考えましたが、  
やはり、closeしなかった場合はメモリリークが発生しますし…

通知を処理するサービスでSQLiteを使用するにはどのように保持・管理・closeするのがベストなのでしょうか？


CC BY-SA 3.0
2015-10-07T07:58:10.407
17352
2016-06-28T13:47:48.047
10346
question
android
Android GCM通知受信時のServiceでSQLiteを効率良く使うには


ちょっと考えてみました。  
通知設定がApplicationクラスのライフサイクルに合うなら、そのスコープで設定値をキャッシュすればsqliteを都度参照しなくて済みませんかね？  
ただ、キャッシュコントロールが必要ですし過度な最適化に思えます。  
変に延命措置をせず、さくっと終了するほうが全体最適ではないかとも思います。。


CC BY-SA 3.0
2016-06-28T13:47:48.047
27149
2016-06-28T13:47:48.047
15039
17352
answer