Androidの別のスレッドでデータベースにアクセスします
-
28-09-2019 - |
質問
どのようにアクセスしますか SQLiteDatabase
別のスレッド内のデータベース(つまり:an AsyncTask
) の Activity
そして、あなたが常にそれを法的状態にしておくことを確認してください?
私が正しく理解していれば、スレッドはいつでも殺され、データベースが開いたままになり、潜在的に IllegalStateException
(sqlitedatabaseが作成し、閉じたことはありません)後者。
これにどのように対処しますか?
解決
もしあなたの AsyncTask
あなたによって管理されています Activity
, 、 それから Activity
キャンセルする場合があります AsyncTask
適切な時間に(OSによって殺されることが脆弱になる場合、例えば Activity.onPause()
) それで AsyncTask.onCancelled()
DBを閉じることができる場所と呼ばれます。
もしあなたの AsyncTask
(またはa Thread
)あなたによって管理されていません Activity
その後、あなたは困っているので、アーキテクチャの再設計を検討する必要があります。
他のヒント
ふたつのやり方:
登録できます
Runtime.addShutdownHook(..)
そこにデータベースを閉じます。カスタムを作成します
Application
実装しますonLowMemory()
データベースを閉じる場所。
所属していません StackOverflow