我正在尝试编写一种算法来最快地扫描整个 SD 卡。我试图实现的是与 QuickPic 一致的东西,它具有“正常速度”的 SD 卡初始扫描,但任何后续刷新都非常快。
我已经尝试了几件事,还有一些我没有测试过的想法
1) 始终扫描整个 SD 卡。我试过这个......它在初始扫描时有点慢。但所有后续扫描都更快,但不如 QucikPic 快。
2) 初始扫描后,将 FileObserver 添加到所有文件夹。虽然它只增加了大约 1 MB 的应用程序内存,但我担心这会影响性能甚至耗尽电池,因为它必须一直运行。此外,我在 SD 卡上有数据库,并且不断收到创建/删除日志文件的事件。我确信在使用其他应用程序时,我会不断收到其他文件夹/文件的通知。不确定这在性能方面是否可行。
3) 使用来自 MediaStore 的数据。不幸的是,我的 HTC Desire Media 商店似乎并不总是与 SD 卡上的内容保持同步(不知道为什么),但这还不够好。
3) 使用 ContentObserver。还没有尝试过,必须检查文档,但我有一种感觉,如果 MediaStore 的数据库中没有图像,那么我也不会从 ContentObserver 获取它。
大家还有什么建议吗?基本上我需要在某个时候了解 SD 卡上的所有图像文件。初始扫描可能需要更长的时间,后续扫描应该尽可能快(我知道这取决于 SD 卡上的文件夹/文件的数量),但 QuickPic 扫描(或其他任何操作)整个 SD 卡大约需要 0.6-0.8 秒,我就是不能那么快。