管理卸载文件的最佳方法

时间:2016-09-06 22:30:46

标签: android service file-transfer

我有一个由AlarmReceiver唤醒的服务,每x分钟查找/ some / path /中的文件,如果它发现它们尝试将它们卸载到某个基于云的API端点。

我正在试图弄清楚最优雅的解决方案是什么,以避免并发警报在连续尝试时调用服务并尝试再次卸载相同的文件(如果前一次运行未能在分配的时间内处理完全卸载警报之间。

我尝试了各种方法,包括跟踪哪些文件已被标记为上传(在SharedPreferences和sqlLt中),以及只是测试是否存在正在运行的服务,而不是在AlarmReceiver中启动另一个,但这一切都感觉很亲切哈基

我想知道我是否忽略了一些“正确”的方法来处理这种操作。

1 个答案:

答案 0 :(得分:1)

我的第一个建议是停止轮询文件系统。您可以使用FileObserver在指定目录中发生有趣事件时收到通知:https://gist.github.com/shirou/659180

要上传文件,我建议JobService根据需要安排和重试http://toastdroid.com/2015/02/21/how-to-use-androids-job-scheduler/

这应该让您进入事件驱动,可靠的上传设计。这是相对论的简单,我可能会坚持这一点。

但是,正如您的问题所示,让我们尝试尽可能多地批处理工作:

假设您有一个文件上传待处理(等待网络可用),并获得另一个文件创建通知。您可以抓取该作业的JobInfocancel作业,并使用新的文件列表reschedule

只是我的两分钱。