本文主要是介绍从源码看ANDROID中SQLITE是怎么通过CURSORWINDOW读DB的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从源码看ANDROID中SQLITE是怎么通过CURSORWINDOW读DB的
更多内容在这里查看
https://ahangchen.gitbooks.io/windy-afternoon/content/
执行QUERY
执行SQLiteDatabase类中query系列函数时,只会构造查询信息,不会执行查询。
(query的源码追踪路径)
执行MOVE(里面的FILLWINDOW是真正打开文件句柄并分配内存的地方)
当执行Cursor的move系列函数时,第一次执行,会为查询结果集创建一块共享内存,即cursorwindow
moveToPosition源码路径
FILLWINDOW—-真正耗时的地方
然后会执行sql语句,向共享内存中填入数据,
fillWindow源码路径
在SQLiteCursor.java中可以看到
@Override
public boolean onMove(int oldPosition, int newPosition) {// Make sure the row at newPosition is present in the windowif (mWindow == null || newPosition < mWindow.getStartPosition() ||newPosition >= (mWindow.getStar
这篇关于从源码看ANDROID中SQLITE是怎么通过CURSORWINDOW读DB的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!