sqliteを使用してアプリを開発していますが、データベースをいつ開いたり閉じたりする必要があるのかわかりません。
- アプリの実行中にデータベースを開いたままにしておくことをお勧めしますか?
- データベースを読み書きしているときにデータベースを開いたり閉じたりする必要がありますか?
- それは重要ですか?
sqliteを使用してアプリを開発していますが、データベースをいつ開いたり閉じたりする必要があるのかわかりません。
はい、それは重要です。モバイルだけでなく、どのアプリケーションでも、データベースで操作を実行するために必要な場合に限り、データベース接続を開いたままにしておくことが常にベストプラクティスです。つまり、できるだけ早く接続を閉じる必要があります。接続は限られたリソースであり、それらを拘束しないことが重要です。
アプリの実行中にデータベースを開いたままにしておくことをお勧めしますか?
それは個人的な好みです。
個人的にはずっと開いたままにしておき、やなどのライフサイクル方式で閉じonStop()
ますonDestroy()
。これにより、データベースを使用する前に毎回呼び出すisDbLockedByCurrentThread()
か、単一のSQLiteDatabaseオブジェクトを呼び出すことで、データベースがすでに使用されているかどうかを簡単に確認できます。isDbLockedByOtherThreads()
これにより、データベースへの複数の操作が防止され、アプリケーションがクラッシュする可能性がなくなります。これは、読み取り/書き込みごとに開閉する場合に、誤って2つのインスタンスを開いている場合に発生する可能性があります。
データベース接続を開いている間は、アプリケーションが強制終了される可能性があることに注意してください。
また、トランザクションを使用して、一度にディスクへの書き込み操作を減らす必要があります。
それは重要ですか?
データベースは、1日の終わりにディスク上の別のファイルにすぎません。複数のスレッド/インスタンスから同時に書き込もうとすると、問題が発生します。