我正在开发一个Android应用程序,我想监视文件。所以,我正在创建一个服务,我正在注册一个文件观察器,它将监视文件的变化。
一旦发生某些事件,它将获取SD卡中所有文件的元数据,并通过用新数据替换旧数据来更新应用程序数据库。
所以我只想知道我应该在服务或活动中注册观察者以节省用户的电量以及什么是更好的选择。
答案 0 :(得分:1)
对于电池寿命而言,它无关紧要(你仍然使用独立于你扩展的类的CPU)
这听起来像服务而不是活动,所以我会选择一项服务。
为了节省电池,你可以做一些事情,具体取决于你的目标。
FileObserver应该为您提供正在访问/更改的文件的直接路径,因此您可能不需要重新扫描SD卡上的所有文件吗?
让服务只存储更改文件的路径,并在服务中不做任何其他操作。然后,当他们启动我们的应用程序界面时,启动异步任务并在后台处理它们。应该非常快,具体取决于应用程序启动时间之间已更改的文件数。
答案 1 :(得分:1)
如果您只想监控用户何时使用该应用,请将观察者代码放入活动中。如果要一直进行监控,请使用服务。显然,应用程序要求决定了这里的选择。
活动服务可能会消耗更多电池,因为它可能会检测到更多文件更改,并且可能会频繁触发。
如果观察者可以通知有关更改的确切文件,则只能更新更改。
另一个优化是在收集大量更新后批量运行数据库更新,而不是每次更新都使用数据库。