我的活动在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. 当我运行它时,应用程序正在关闭?无法启动活动?
- 5. 使用Intent.createChooser关闭活动
- 6. AsyncTask访问数据库 - 在哪里初始化,关闭?
- 7. 在关闭数据库时LevelDB快照能够存活吗?
- 8. 为什么在调用StartActivityForResult时mvvmcross会关闭当前活动?
- 9. 当应用程序关闭时,数据库连接会立即关闭吗?
- 10. 当应用程序关闭时清除sqlite数据库android
- 11. 由于数据库关闭而无法恢复活动
- 12. 不活动后关闭数据库连接
- 13. Android SQLite关闭数据库之间的2个活动
- 14. 正确关闭我的数据库
- 15. 在关闭活动时显示消息
- 16. UploadServiceBroadcastReceiver在活动结束时关闭
- 17. 活动在按下按钮时关闭
- 18. objAccess.Application.Quit在尝试关闭Access数据库时不能正常工作使用python
- 19. 使用greenDao关闭数据库
- 20. 如何在使用Blaze打开时关闭数据库会话
- 21. 当用户关闭屏幕时开始活动?
- 22. 关闭当前活动out previous activity
- 23. 当我关闭应用程序时,AsyncTask会停止吗?
- 24. 通知在状态栏中,当通知关闭时停止asynctask
- 25. Android在关闭时关闭所有活动
- 26. 如果使用commonsware loaderex SQLiteCursorLoader时何时关闭数据库?
- 27. 关闭时添加动画活动 - android
- 28. 当我在设置活动中的应用程序正在关闭
- 29. 当数据库关闭时,C3p0无法重新连接数据库
- 30. 传递给活动时的Sqlite错误(关闭数据库和光标)
“当你处理死亡时,数据库将被正确关闭”<<你的意思是当应用程序被终止时,数据库会自动关闭吗? 好吧,我正在使用单身人士,在哪里打开和关闭? – Emerald214
是的。打开你首先需要使用它,不要关闭。 –
不工作=。=。始终有“完成尚未停用或关闭的游标”异常。我的应用程序使用列表视图,光标,AsyncTasks,不使用startManagingQuery,不关闭任何东西。 AsyncTask在onPostExecute()中的重新查询游标。我在StackOverflow上阅读了许多问题,但仍然没有最佳解决方案。我正在尝试其他方法...... – Emerald214