android - cursor.moveToPosition(i) 有多快?

标签 android sqlite android-cursoradapter

想知道调用 cursor.moveToPosition(i); 会触发持久存储操作,还是只是从内存缓存中读取?

在 Android 的 RecycleView Adapter 中,这个调用非常频繁,我不想让系统过载访问持久存储。这种风险是否存在?

Cursor cursor = MainActivity.db.rawQuery("Select _id From UserSetting", null); 操作是否会产生缓存结果?

@Override
public void onBindViewHolder(ItemHolder itemHolder, int i) {

    cursor.moveToPosition(i);
    int i2 = cursor.getColumnIndexOrThrow("_id");
    final String _id = cursor.getString(i2);
    itemHolder.itemRecordName = _id;
    int i3 = cursor.getColumnIndexOrThrow("text");
    final String text = cursor.getString(i3);
    int i4 = cursor.getColumnIndexOrThrow("userSettingRecordName");
    final String userSettingRecordName = cursor.getString(i4);

最佳答案

光标有一个内存窗口。但如果跳远,您的代码将触发 io 操作。 找详情CursorWindow

关于android - cursor.moveToPosition(i) 有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39347339/

相关文章:

android - 合并 pcm 音频文件

android - 如何备份 Android 数据库 - 启用 WAL

android - Listview 使用 CursorAdapter 子类的数据复制项目

android - 维护一个 ListView,其中每个列表项都具有一对多关系

java - 使用Timer调用AsyncTask类

android - 如何让 ndk-gdb 在 Android 上运行?

mysql - 在连接的情况下是否对条件进行分组在 SQL 中是否重要?

java - 如何查询月初到今天的 SQLite 数据

java - close() Cursor 对象然后为其设置新值是否可以?

java - 从图库或照片中删除图片 android 8.0