我有一个主要活动,它使用viewpager和数据库适配器来提供视图。 最初,Db中的所有行都被拉入光标(Async)
一旦返回此光标,用户就可以添加来自不同活动的各种搜索条件,然后通过异步评分算法运行所有数据。
我收到了一些关于没有关闭数据库的数据库错误,所以我在onPause中关闭了光标和数据库,并在onResume中重新实例化了它们。这样可以正常工作,但是为结果开始构建评分搜索条件的活动。当它们返回主线程时onActivityResult在恢复之前被调用,因此我无法从此处运行评分算法,因为光标尚不存在(必须在onResume中重新创建)。
现在,如果我希望能够在asyncTask运行时切换活动,我无法关闭光标和onPause中的Db。
有没有人有任何想法?我的“设计”是否存在根本缺陷?
谢谢,m
答案 0 :(得分:0)
您应该将光标传递给要管理的活动,以便在删除活动时光标自动关闭。
嗯,虽然当我查阅引用时,它建议使用新的cusorLoader并使用兼容性库。
这个链接可以帮助你开始
答案 1 :(得分:0)
Cursor
result
myCursor
onPostExecute()
来自Async
的{{1}}需要进行管理。如果您想要一个简单的管理解决方案,可以覆盖onDestroy()
。
@Override
protected void onPostExecute(Cursor result) {
myCursor = result;
}
...
@Override
protected
void onDestroy() {
if (myCursor != null) myCursor.close();
myCursor = null; /* GC */
super.onDestroy();
}
适合我:)