我一直在阅读内容提供商和媒体商店,但我仍然不确定解决这个常见问题的最佳方法是什么。
为了简化,假设我想创建一个应用来阅读电子书。用户将以某种方式将他们的电子书复制到设备存储中(即:使用USB和他们的计算机,从保管箱,电子邮件......)。 电子书可能有多种格式(mobi,epub,...)。由于这些文件不是媒体文件,因此我不能将Media Store用于此目的。同样重要的是要注意,我不想为某些类型的文件(例如我的示例中的电子书)提供具体的解决方案。我想要一个适用于所有类型文件的解决方案,即使是最具异国情调的文件。
我想对设备存储执行扫描,以显示设备中保存的电子书列表。我想应该在第一次启动应用程序时完成,如果用户想要更新列表,则应该在之后完成。
我看到的问题是用户可能会删除我应用程序之外的一些电子书文件,因此它可能会显示一些旧的条目,而这些条目已经不存在了。当然,如果用户选择删除的条目,我可以显示错误消息,但也许有更好的解决方案。
我的问题基本上是保持文件列表最新的最佳策略。使用“最佳策略”,我的意思是,避免潜在的严重错误,并尽可能使用户对所有内容透明。
答案 0 :(得分:1)
我认为当用户选择已删除的条目时向用户显示错误消息是当前最好的方法。您还可以在用户启动应用程序后启动后台服务以检查文件列表。在大多数情况下,代码将比用户的反应更快。我认为应用程序可以在用户与数据交互之前自行更新。或者,您可以在更新数据时仅显示进度条,并在完成后显示数据(书籍)。
或者,有FileObserver
。但我认为这是不可能的。您需要后台服务来查看文件。这对电池寿命和设备性能不利。