AndroidアプリケーションレベルでSQLiteデータベースを閉じて開く
-
21-12-2019 - |
質問
私はSQLiteデータベースを宣言してアプリケーションレベルで保存しています。デバイスの回転などの設定変更を処理するので、データベースの閉まりはMainActivityのondestroyの内部に設定されていますが、IF(this.isfinishing())の内側に設定します。
問題は、私がそれを再び起動しようとしているアプリを閉じた後に、すでに閉じたデータベースを開こうとしたことを私に言ってクラッシュします。次回は正しく起動します。私はこれが必要ではないので、Androidは本当にアプリケーションを閉じたことがないためです。
onfinish / ondestroy ....アプリケーションレベルでデータベースを閉じるための方法を見つけることができませんでした。 私ができる唯一の回避策は、データベースを閉じないことです。しかし、これは私のアプリケーションを真に閉じたときに再びそれを開こうとしているときに私に問題を与えるかもしれません。
申請を強制する方法はありますか? (私はそうではないと思います)。 データベースを閉じるためにアプリケーションの閉鎖を検出する方法はありますか? アプリケーションがAndroidによって閉じられていた場合、閉じられていないデータベースを開こうとする問題がありますか?またはAndroidは、閉じるアプリケーションにリンクされているデータベースを閉じますか?
解決
私ができる唯一の回避策はデータベースを閉じないことです
正しい、これは正しい答えです。
しかし、これは私に再びそれを開こうとしているときに私に問題を与えるかもしれません。
いいえ。
アプリケーションの終了を検出する方法はありますか?
いいえ。
アプリケーションがAndroidによって閉じられていた場合は、閉じられていないデータベースを開こうとする問題がありますか?
いいえ。
またはAndroidは、閉じるアプリケーションにリンクされているデータベースを閉じますか?
いいえ。
データベースを閉じることは、あまりすべてのことを実際にはしません。SQLiteはトランザクションです。これらのトランザクションを実行すると、すべてのデータベースの書き込み操作がディスクに書き込まれます。