2011-06-22 14 views
3

私のアプリケーションには、同じSQLiteデータベースから読み書きするいくつかのアクティビティとサービスがあります。同期を維持するために、私はSQLiteDatabaseオブジェクトのシングルトンインスタンスを使用します。データベースを安全に閉じる

しかし、しばらくして、私はAndroidマーケットコンソールを通じて顧客からスタックトレースを取得し、何かがすでに閉じられたデータベースにアクセスしようとしたことを示しています。

現在、私のアクティビティは常にonCreateとonPause(ifFinishingの場合)でデータベースを開いて閉じます。アクティビティーでデータベースがオープンされているときは、静的なブール値を切り替えて、サービスを閉じないようにします。私のサービス(AlarmManagerに基づいて定期的に実行される)は、必要なものを読み終えたらすぐに開き、直ちに閉じます。ただし、アクティビティの静的ブール値がオンの場合、サービスはデータベースを閉じません。

私の穴がどこにあるのかわかりません。とにかく定期的にサービスを利用しているのであれば、いつもデータベースを閉じておく必要がありますか。

答えて

0

この問題を回避するには、onDestroyメソッドでデータベースを閉じてください。

時々onDestroyが呼び出されないことは本当ですが、それは本当に問題ではありません。 OSがプロセスを停止させると、すべてのリソースがとにかくクリーンアップされます。

関連する問題