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