如何完全擦除光标的数据以防止内存泄漏?

时间:2014-08-25 11:32:07

标签: java android eclipse cursor

我正在使用这个多次使用游标的Android应用程序,但它似乎抛出了一个CursorWindowAllocationExecption。我研究了这个错误,并且知道这个错误是由于游标内存溢出造成的。因此,每次使用光标后,我都会用:

关闭光标
 try{
    c.close();
    }
    finally{
        c.close();
    }

据说在尝试关闭游标时最终使用是最好的,并且我知道将c.close放入try语句应该包括游标的用法,但说实话,我只想让光标关闭因此,我会在代码块中使用光标,然后在下一次使用之前关闭它。我甚至关闭数据库以确保数据被切断。然后我打开数据库备份,并使用相同的光标从数据库中检索不同的数据。此方法通过3个代码块工作,但是当它到达第4个代码块时,它会抛出游标异常。我经历了很多类似的帖子,每个人都提出了相同的建议(确保光标处于关闭状态)。这就是我编写过多代码的原因,例如try和finally语句以及数据库结束语句。我试图避免发布代码,因为那时我必须发布数百行代码才能使其有用。我希望我发布的信息足以理解我的问题。

1 个答案:

答案 0 :(得分:0)

尝试/抓住并不是你的答案,因为你在关闭光标时不会抛出错误。您在尝试使用它时会抛出错误。这就是为什么你的代码没有效果......当你抛出一个从未抛出的错误时,你要求它做某事。

由于您的问题不是由于尝试使用游标而直接导致的,而是尝试使用错误的游标,因此测试您抛出的异常也不会有帮助。

你必须首先找到抛出异常的原因。