Którego z dwóch poniższych użyć, aby upewnić się, że wszystkie kursory są zamknięte?Idiom zamykający kursor
Cursor c = getCursor();
if(c!=null && c.getCount()>0){
try{
// read values from cursor
}catch(..){}
finally{
c.close();
}
}//end if
OR
Cursor c = getCursor();
try{
if(c!=null && c.getCount()>0){
// read values from cursor
}//end if
}catch(..){
}finally{
c.close();
}
EDIT:
kilka pytań: 1. Czy
musimy zadzwonić close() na kursor, który ma liczbę 0?
2. Ponieważ w przypadku pierwszego idiomu funkcja close() nigdy nie zostanie wywołana. Zakłada on, że dla kursora bez elementów kursor nigdy nie zostanie otwarty. Czy to jest prawidłowe założenie?
Prosimy o radę.
dzięki za odpowiedź! –
Myślę, że nie używać getCount jest dobrą metodą. jeśli użytkownik moveToFirst, możesz uzyskać lepszą wydajność – wangzhengyi
@wangzhengyi - To jest poprawny punkt moveToFirst jest bardziej wydajny i odpowiada na pytanie "czy jest coś w zestawie wyników" ... ale OP użył getCount() w ich przykładzie, więc kontynuował to tutaj. –