Android 安卓何时关闭数据库
我有一个主要的活动,用户可以使用一个viewpager和一个数据库适配器来提供视图。 最初,Db中的所有行都被拉入游标(异步) 返回此游标后,用户可以添加来自不同活动的各种搜索条件,然后通过异步评分算法运行所有数据 我收到了一些关于没有关闭数据库的数据库错误,因此我在onPause中关闭了游标和数据库,并在onResume中重新实例化了它们。这将很好地工作,但建立评分搜索标准的活动将针对结果启动。当他们返回到主线程时,onActivityResult在resume上被调用,因此我无法从这里运行评分算法,因为光标还不存在(必须在onResume中重新创建) 现在,如果我想在asyncTask运行时切换活动,我不能在onPause中关闭游标和Db 有人有什么想法吗?我的“设计”根本上有缺陷吗Android 安卓何时关闭数据库,android,sqlite,asynchronous,cursor,Android,Sqlite,Asynchronous,Cursor,我有一个主要的活动,用户可以使用一个viewpager和一个数据库适配器来提供视图。 最初,Db中的所有行都被拉入游标(异步) 返回此游标后,用户可以添加来自不同活动的各种搜索条件,然后通过异步评分算法运行所有数据 我收到了一些关于没有关闭数据库的数据库错误,因此我在onPause中关闭了游标和数据库,并在onResume中重新实例化了它们。这将很好地工作,但建立评分搜索标准的活动将针对结果启动。当他们返回到主线程时,onActivityResult在resume上被调用,因此我无法从这里运行评
谢谢,m您应该将光标传递给要管理的活动,以便在删除活动时自动关闭光标 嗯,虽然当我查阅参考资料时,它建议使用一个新的cusorLoader和兼容库 不过,这个链接应该可以帮助您开始
在
onPostExecute()
中,从Async
分配给saymyCursor
的游标
需要管理。如果您想要一个简单的管理解决方案,您可以覆盖onDestroy()
@Override
protected void onPostExecute(Cursor result) {
myCursor = result;
}
...
@Override
protected
void onDestroy() {
if (myCursor != null) myCursor.close();
myCursor = null; /* GC */
super.onDestroy();
}
为我工作:)