android - 为 android sdk 30 读取存储卡上的自定义文件
问题描述
我有一个应用程序可以创建在画廊中显示的自定义文件。它们不是图像或其他标准媒体文件。由于文件很大,我要求用户访问将存储文件的文件夹。
到目前为止,一切都很好。
通过 DocumentFile 读取这些文件或文件信息比通过 File 慢得多。像这样的操作
DocumentsContract.findDocumentPath()
documentFile.isFile()
documentFile.getName()
每个最多需要15ms,在读取大量文件时会累积很长时间。
处理这个问题的最佳方法是什么?还有另一种方法可以做到这一点吗?我不希望文件位于内部应用程序内存中,否则用户在卸载应用程序时可能会丢失他们的工作。
提前致谢!这让我压力很大。
解决方案
异步执行。您是否需要立即获取所有数据?可能不是。因此,在线程/协程中执行此操作,如果您还没有数据,只需对您的应用程序进行编程以不显示数据(并在您这样做时自行刷新)。
此外,即使您确实需要它 - 您是否需要它来预先处理所有文件?在画廊中,您可以只处理立即显示的那些,以及接下来可能显示的几个。所以只取那个,当你需要它们时(或者当你可能很快需要它们时)得到其他的。将其视为从 Web API 获取结果 - 您不会获取所有发布的帖子,而是获取几十个,然后当它们接近底部时再获取几十个
推荐阅读
- ios - 演示 react native ios 应用程序。如何使用苹果开发者帐户?
- json - 如何在 Power BI 中拆分 JSON 列
- angularjs - AngularJS 指令 - 访问模板中的 $rootScope 变量
- indexing - 如何执行 IndexPage Hook Contao
- javascript - 如何在 JavaScript 或 jQuery 中下载文件
- asp.net-mvc - 我可以直接在剃刀视图中从另一个表进行分组聚合计算吗?
- php - 如何使用 PHP 在 JSON 中循环多个数组对象
- javascript - 如何在 Angular 4 中进行数据属性绑定?
- python-2.7 - Python:在大型数据集上处理 groupby
- oauth-2.0 - 用没有客户端密码的授权码替换 OAuth2 隐式授权