質問: レシーバーで通知受信時にサービスを立ち上げてステータスバーに通知を出す処理を定義しています。 ただ、実際にステータスバーに通知を出すかどうかは サービス内で SQLite を用いて判断します。 現在は サービスに一応 static で SQLite を保持しており、 onStartCommand で null だったらデータベースをインスタンス化しております。 また、 onDestroy にて毎回クローズしています。 とは言え、サービスは毎回終了する度に onDestroy がコールされると思うので 実質1通知を処理するのに毎回 データベースを読み込んでいるかと思います。 データベースのレコードはアプリ起動時に毎回最適化しているのでせいぜい平均50程度と殆ど負荷にはならないかと思いますが、それでも効率が悪いのには変わりありません... トークアプリのため、通知はたくさん来ます。 SQLiteはネイティブで保持されているとのことで、closeしないことも考えましたが、 やはり、closeしなかった場合はメモリリークが発生しますし... 通知を処理するサービスでSQLiteを使用するにはどのように保持・管理・closeするのがベストなのでしょうか?
回答: ちょっと考えてみました。 通知設定がApplicationクラスのライフサイクルに合うなら、そのスコープで設定値をキャッシュすればsqliteを都度参照しなくて済みませんかね? ただ、キャッシュコントロールが必要ですし過度な最適化に思えます。 変に延命措置をせず、さくっと終了するほうが全体最適ではないかとも思います。。