我一直在阅读有关内容提供者和媒体商店的文章,但我仍然不确定解决这个常见问题的最佳方法是什么。
为了简化,假设我想创建一个阅读电子书的应用程序。用户将以某种方式将他们的电子书复制到设备存储中(例如:使用USB和他们的电脑,从dropbox,电子邮件…)。电子书可能有几种格式(mobi, epub,…)。由于这些文件不是媒体文件,因此我不能将媒体商店用于此目的。同样重要的是要注意,我不想为某些类型的文件(例如我的示例中的电子书)提供具体的解决方案。我想要一个对所有类型的文件都有效的解决方案,甚至是最奇特的文件。
我想对设备存储执行扫描,以显示保存在设备中的电子书列表。我想这应该在应用程序第一次启动时完成,然后如果用户想要更新列表。
我看到的问题是,用户可能会删除我的应用程序外的一些电子书文件,所以它可能会显示一些旧的条目,不再存在了。当然,如果用户选择了已删除的条目,我可以显示错误消息,但也许有更好的解决方案。
我的问题基本上是保持文件列表最新的最佳策略是什么。我所说的"最佳策略"是指避免潜在的关键错误,并尽可能让所有内容对用户透明。我认为,当用户选择已删除的条目时,向用户显示错误消息是目前最好的方法。你也可以在用户启动应用程序后启动后台服务来检查文件列表。在大多数情况下,代码将比用户的反应更快。我认为应用程序可以在用户与数据交互之前自我更新。或者您可以在更新数据时只显示进度条,并在完成时显示数据(图书)。
或者有FileObserver
。但我认为这是不可能的。你需要一个后台服务来监视文件。这对电池寿命和设备性能不利。