android的电池消耗量(按观察者和服务)

android的电池消耗量(按观察者和服务),android,Android,我正在开发一个android应用程序,我想在其中监视文件。因此,我所做的是创建了一个服务,我在其中注册了一个文件观察者,它将监视文件更改 一旦发生某些事件,它将获取sd卡中所有文件的元数据,并通过用新数据替换旧数据来更新应用程序数据库 因此,我只想知道我应该在服务或活动中注册观察者,以节省用户的电池,以及什么是更好的选择。对于电池寿命来说,这并不重要(您仍然使用CPU,而不依赖于您扩展的类) 这听起来像是一项服务而不是一项活动,所以我会选择一项服务 为了节约电池,你可以根据你的目标做一些事情 F

我正在开发一个android应用程序,我想在其中监视文件。因此,我所做的是创建了一个服务,我在其中注册了一个文件观察者,它将监视文件更改

一旦发生某些事件,它将获取sd卡中所有文件的元数据,并通过用新数据替换旧数据来更新应用程序数据库


因此,我只想知道我应该在服务或活动中注册观察者,以节省用户的电池,以及什么是更好的选择。

对于电池寿命来说,这并不重要(您仍然使用CPU,而不依赖于您扩展的类)

这听起来像是一项服务而不是一项活动,所以我会选择一项服务

为了节约电池,你可以根据你的目标做一些事情

  • FileObserver应该为您提供正在访问/更改的文件的直接路径,因此您可能不需要重新扫描sd卡上的所有文件

  • 让服务只存储更改文件的路径,而不在服务中执行其他操作。然后,当他们启动我们的应用程序界面时,启动一个异步任务并在后台处理它们。这应该相当快,这取决于在应用程序启动期间更改的文件数


  • 如果您只想监视用户何时使用应用程序,请在“活动”中放置观察者代码。如果要始终进行监控,请使用服务。显然,应用程序需求决定了这里的选择

    主动服务可能会消耗更多的电池,因为它可能会检测到更多的文件更改,并且可能会频繁触发

    如果观察者可以通知更改的确切文件,则您只能更新更改

    另一个优化是在收集了大量更新后批量运行数据库更新,而不是每次更新都使用数据库