私のアプリケーションの同じランタイムで、すべてのローカルデータベースを削除し、新しい暗号化で再作成できるシナリオがあります。その端のケースが可能ですが。コンテンツプロバイダによって開かれたオープンdb接続を閉じるandroid
問題は、システムがコンテンツプロバイダーを介してアクセスされたため、これらのデータベースへのオープンな接続を維持していることです。古いものが削除された後に同じランタイムで新しいデータベースを作成または書き込もうとすると、データベースが読み取り専用であるというエラーが表示されます。私がアプリを殺して再開すれば、それは問題ありません。
finishAffinity()
を使用して手動でアプリを強制終了しようとしましたが、システムがデータベース接続をクリーンアップするのに十分なほど少なくともアプリを強制終了させるわけではありません。
システムに強制的にデータベースへのオープン接続を強制することはできますか?
私はdbを明示的に閉じる方法を知っています。しかし、私はどこにでも明示的にオープンしているわけではなく、コンテンツプロバイダを使用しており、開いているデータベースをクローズするための参照はありません。 – nserror
** mProvider.shutdown(); **を使用 –