传统观点认为,避免调用Cursor.getCount()是因为这是一项昂贵的操作。
深入研究AbstractCursor source code之后,似乎所有标准操作,包括moveToNext
,moveToFirst
和moveToPosition
都在内部调用getCount
!
那么完全避免自己调用它有什么意义呢?
编辑:添加了指向Android文档的超链接
编辑:也许我可以纠正?
我的印象是,Cursor可以在大型数据集上提供移动的窗口,只有在窗口仔细浏览了整个数据集一次之后,才能知道其全长。因此,调用getCount
会导致完全加载/迭代,而moveToNext仅在必要时才推进窗口。