Android ContentResolver.query始终返回相同的数据
我有一个视频播放器应用程序,带有文件浏览器,列出SD卡上的所有视频 源代码 使用ContentResolver可以按预期工作,但如果卡上的文件发生更改,它不会更新。我不是说自动,而是在视图/应用程序重新启动后。即使重新安装应用程序也没有帮助,仍然显示相同的文件。已删除的视频文件在PC上不可见,也无法播放(此视频无法播放(翻译)) 我转储了数据,问题不在视图缓存或其他地方。我自己没有实现任何缓存,也没有找到任何相关内容。多谢各位 代码: 编辑1[14-03-2013]:Android ContentResolver.query始终返回相同的数据,android,search,invalidation,Android,Search,Invalidation,我有一个视频播放器应用程序,带有文件浏览器,列出SD卡上的所有视频 源代码 使用ContentResolver可以按预期工作,但如果卡上的文件发生更改,它不会更新。我不是说自动,而是在视图/应用程序重新启动后。即使重新安装应用程序也没有帮助,仍然显示相同的文件。已删除的视频文件在PC上不可见,也无法播放(此视频无法播放(翻译)) 我转储了数据,问题不在视图缓存或其他地方。我自己没有实现任何缓存,也没有找到任何相关内容。多谢各位 代码: 编辑1[14-03-2013]: 我尝试将number+“=
我尝试将
number+“=”+number
添加到ORDER或WHERE子句中,作为一个潜在的查询缓存buster,但没有效果(尽管它可能被优化器作为一个无用的子句删除)。这次我使用不同的证书从不同的机器重新安装了应用程序,但查询结果保持不变,列出了当前不存在的文件。您应该首先调用cursor.moveToFirst()
因此,游标迭代循环应该如下所示
if (cursor.moveToFirst()) {
do {
// cursorIndex = cursor.getColumnIndexOrThrow, etc...
} while (cursor.moveToNext());
}
您应该首先调用
cursor.moveToFirst()
因此,游标迭代循环应该如下所示
if (cursor.moveToFirst()) {
do {
// cursorIndex = cursor.getColumnIndexOrThrow, etc...
} while (cursor.moveToNext());
}
顺便说一句,MediaStore不会自动计算MediaStore.Video.Media.DURATION,因此它通常为0,除非另一个应用程序使用有效值更新了MediaStore db记录。谢谢,我会记住它…并编写代码。到目前为止,我尝试的每个文件都已正确填充。顺便说一句,MediaStore不会自动计算MediaStore.Video.Media.DURATION,因此它通常为0,除非另一个应用程序使用有效值更新MediaStore db记录。谢谢,我会记住它…并编写代码。到目前为止,我试过的每一个文件都填写正确,现在工作正常,所以我认为它解决了问题。。。谢谢现在一切正常,所以我想它解决了。。。谢谢