通过BroadcastReciever替代FileObserver?

时间:2012-05-08 21:20:12

标签: android broadcastreceiver android-manifest android-service android-activity

我需要监控SD卡中的文件(递归)。由于广播接收器可以通过设置特定的意图过滤器“动作”来接收系统事件,我们可以使用它来处理文件更改事件,如打开,删除等。我们需要知道的是“动作”,“类别”和“动作”。 “数据”值将与清单文件中的任何特定“用户权限”一起设置。

另一种方法是实现FileObserver,但这有垃圾收集的问题,即使我们创建一个服务来保存其对象,当资源不足时,服务本身可能被终止(点5.2 http://www.vogella.com/articles/AndroidServices/article.html)所以它不是完全是一种证明方法。

您能告诉我哪些配置值会使BroadcastReciever接收此类事件/意图吗?

1 个答案:

答案 0 :(得分:3)

  

由于广播接收器可以通过设置特定的意图过滤器“动作”来接收系统事件,我们可以使用它来处理文件更改事件,如打开,删除等。

没有。普通的Java I / O操作不会导致广播。

  

另一种方法是实现FileObserver但是这有垃圾收集的问题,即使我们创建一个服务来保存其对象,当资源不足时,服务本身可能会被终止......所以它不完全是一个完整的证明方法。

除了修改固件之外,没有“万无一失”的方法可以持续监控外部存储操作。

我会使用AlarmManager定期扫描目录以查找更改,并使用用户选择的轮询周期,以便他们可以控制应用程序的电池和CPU消耗。