我犯了一个菜鸟错误,我在没有关闭任何游标的情况下编写了我的整个应用程序。这有效,直到应用程序关闭并重新打开。
然而,现在,我正在经历并关闭我的游标:
public boolean contains (int pk)
{
Cursor cursor = null;
try
{
cursor = //cursor assigned;
if (cursor.moveToFirst())
{
do
{
if (cursor.getInt(/*PK COLUMN*/) == pk)
return true;
}
while (cursor.moveToNext());
}
}
finally
{
if(cursor!= null)
cursor.close();
}
return false;
}
这是一个不同的解决方案,但它声明了一个无意义的临时变量,并在不同的区域关闭光标。
public boolean contains (int pk)
{
Cursor cursor = //value;
if (cursor != null && cursor.moveToFirst())
{
do
{
int val = cursor.getInt(/*PK COLUMN*/);
if(pk == val)
{
cursor.close();
return true;
}
}
while (cursor.moveToNext());
cursor.close();
}
return false;
}
使用try-finally在return语句后清理有什么问题吗?
答案 0 :(得分:1)
在你的第一个解决方案中,你在没有关闭光标的情况下返回true。 但是最后关闭它是一种很好的做法。