首页 > 解决方案 > 为 android sdk 30 读取存储卡上的自定义文件

问题描述

我有一个应用程序可以创建在画廊中显示的自定义文件。它们不是图像或其他标准媒体文件。由于文件很大,我要求用户访问将存储文件的文件夹。

到目前为止,一切都很好。

通过 DocumentFile 读取这些文件或文件信息比通过 File 慢得多。像这样的操作

DocumentsContract.findDocumentPath()
documentFile.isFile()
documentFile.getName()

每个最多需要15ms,在读取大量文件时会累积很长时间。

处理这个问题的最佳方法是什么?还有另一种方法可以做到这一点吗?我不希望文件位于内部应用程序内存中,否则用户在卸载应用程序时可能会丢失他们的工作。

提前致谢!这让我压力很大。

标签: androidandroid-11documentfile

解决方案


异步执行。您是否需要立即获取所有数据?可能不是。因此,在线程/协程中执行此操作,如果您还没有数据,只需对您的应用程序进行编程以不显示数据(并在您这样做时自行刷新)。

此外,即使您确实需要它 - 您是否需要它来预先处理所有文件?在画廊中,您可以只处理立即显示的那些,以及接下来可能显示的几个。所以只取那个,当你需要它们时(或者当你可能很快需要它们时)得到其他的。将其视为从 Web API 获取结果 - 您不会获取所有发布的帖子,而是获取几十个,然后当它们接近底部时再获取几十个


推荐阅读