私のアプリケーションには、同じSQLiteデータベースから読み書きするいくつかのアクティビティとサービスがあります。同期を維持するために、私はSQLiteDatabaseオブジェクトのシングルトンインスタンスを使用します。データベースを安全に閉じる
しかし、しばらくして、私はAndroidマーケットコンソールを通じて顧客からスタックトレースを取得し、何かがすでに閉じられたデータベースにアクセスしようとしたことを示しています。
現在、私のアクティビティは常にonCreateとonPause(ifFinishingの場合)でデータベースを開いて閉じます。アクティビティーでデータベースがオープンされているときは、静的なブール値を切り替えて、サービスを閉じないようにします。私のサービス(AlarmManagerに基づいて定期的に実行される)は、必要なものを読み終えたらすぐに開き、直ちに閉じます。ただし、アクティビティの静的ブール値がオンの場合、サービスはデータベースを閉じません。
私の穴がどこにあるのかわかりません。とにかく定期的にサービスを利用しているのであれば、いつもデータベースを閉じておく必要がありますか。