我的活動在onResume()中打開數據庫並在onPause()中關閉它。活動啓動時,許多使用該數據庫的AsyncTasks都會執行。當我按下「後退」按鈕時,數據庫被關閉並出現錯誤,因爲AsyncTask正在使用它。這個問題的解決方案是什麼?當AsyncTask正在使用數據庫時,活動關閉
0
A
回答
2
不要關閉數據庫。讓db助手類成爲單例,並根據需要從您的活動中訪問它。當你處理死亡時,數據庫將被正確關閉。確保你關閉了你的遊標。
1
這是可能的解決方案,我能想到的...
protected void onPause() {
super.onPause();
//before database close
if(asyncTask.getStatus() != AsyncTask.Status.FINISHED){
asyncTask.cancel(true);
}
//close your database
}
調用cancel(布爾mayInterruptIfRunning)不一定停止後臺線程。但你可以在你的doInBackground方法中做什麼...
protected Void doInBackground(Void... params) {
if(!(isCancelled())){
//if async task not cancelled
//Database still open and good to use
} else {
//database is closed
}
return null;
}
希望這至少給一些方向來解決你的問題。
相關問題
- 1. 當AsyncTask使用小部件時,活動關閉
- 2. 使用AsyncTask時的活動在關閉時崩潰
- 3. 如何關閉ASyncTask的活動?
- 4. 關閉活動並在AsyncTask完成後返回到父活動
- 5. 當數據庫關閉時捕獲'PDOException'
- 6. Android:在關閉WiFi時關閉活動
- 7. 當獲取json數據時關閉活動
- 8. 當活動關閉時運行代碼
- 9. 在onPostExecute()運行之前活動關閉時從asyncTask錯誤更新活動
- 10. 當使用sails.js關閉mongodb數據庫連接時?
- 11. 當我運行它時,應用程序正在關閉?無法啓動活動?
- 12. 使用Intent.createChooser關閉活動
- 13. 使用BroadcastReceiver關閉活動
- 14. 當按下按鈕時,結果活動關閉主要活動
- 15. 在關閉數據庫時LevelDB快照能夠存活嗎?
- 16. AsyncTask訪問數據庫 - 在哪裏初始化,關閉?
- 17. 爲什麼在調用StartActivityForResult時mvvmcross會關閉當前活動?
- 18. 當應用程序關閉時,數據庫連接會立即關閉嗎?
- 19. 當應用程序關閉時,BroadcastReceiver無法啓動活動
- 20. 當啓動活動時,應用程序進程已關閉
- 21. 如何在使用Firebase數據庫恢復活動時正確恢復數據?
- 22. 嘗試打開活動並在Spinner中顯示數據庫時強制關閉
- 23. 當應用程序關閉時清除sqlite數據庫android
- 24. 當應用程序關閉時寫入數據庫
- 25. 在當前活動中關閉舊活動
- 26. 在android活動中使用數據庫
- 27. 由於數據庫關閉而無法恢復活動
- 28. Java/Android活動與數據庫關閉()問題
- 29. 不活動後關閉數據庫連接
- 30. Android SQLite關閉數據庫之間的2個活動
「當你處理死亡時,數據庫將被正確關閉」<<你的意思是當應用程序被終止時,數據庫會自動關閉嗎? 好吧,我正在使用單身人士,在哪裏打開和關閉? – Emerald214
是的。打開你首先需要使用它,不要關閉。 –
不工作=。=。始終有「完成尚未停用或關閉的遊標」異常。我的應用程序使用列表視圖,光標,AsyncTasks,不使用startManagingQuery,不關閉任何東西。 AsyncTask在onPostExecute()中的重新查詢遊標。我在StackOverflow上閱讀了許多問題,但仍然沒有最佳解決方案。我正在嘗試其他方法...... – Emerald214