質問

どのようにアクセスしますか SQLiteDatabase 別のスレッド内のデータベース(つまり:an AsyncTask) の Activity そして、あなたが常にそれを法的状態にしておくことを確認してください?

私が正しく理解していれば、スレッドはいつでも殺され、データベースが開いたままになり、潜在的に IllegalStateException (sqlitedatabaseが作成し、閉じたことはありません)後者。

これにどのように対処しますか?

役に立ちましたか?

解決

もしあなたの AsyncTask あなたによって管理されています Activity, 、 それから Activity キャンセルする場合があります AsyncTask 適切な時間に(OSによって殺されることが脆弱になる場合、例えば Activity.onPause()) それで AsyncTask.onCancelled() DBを閉じることができる場所と呼ばれます。

もしあなたの AsyncTask (またはa Thread)あなたによって管理されていません Activity その後、あなたは困っているので、アーキテクチャの再設計を検討する必要があります。

他のヒント

ふたつのやり方:

  1. 登録できます Runtime.addShutdownHook(..) そこにデータベースを閉じます。

  2. カスタムを作成します Application 実装します onLowMemory() データベースを閉じる場所。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top