什么消耗更多的电池:一个长期服务,没有做太多或很多短期的IntentServices

时间:2015-10-27 15:55:20

标签: android android-location intentservice battery android-backup-service

我正在设计一个应用程序,它将从许多传感器收集不同的数据,并将它们连续存储在数据库中。我使用的传感器就像Google Play的融合位置提供商和活动检测。 (也有一些用户界面,但UI几乎不会启动,因此几乎所有内容都在后台发生)

我有两种不同的方法可以做到这一点:

1)启动长期服务

所以我会开始一个长期服务(带有STICKY标志),它会在后台运行。该服务只会注册定期位置和活动更新,并且 - 在更新之间 - 只是什么都不做。

优点:应用只会初始化一次

缺点:服务全天候运行

2)注册PendingIntent并使用短期IntentService

现在Google Play的位置提供商支持PendingIntent的注册,而不是回调[请参阅此处](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient%2C%20com.google.android.gms.location.LocationRequest%2C%20android.app.PendingIntent),甚至建议用于后台任务。

优点:应用程序可以在传感器事件之间“关闭”

缺点:如果应用程序在中间关闭,每个IntentService可能会重新启动应用程序,这可能会产生相当大的开销(初始化数据库,读取共享首选项,初始化所有类,...)

所以我的问题是:是否仍然建议在这种应用程序中使用许多短暂的IntentServices?我还没有做任何测量,但我很担心,每个IntentService(和它们将经常启动),重新启动我的应用程序,这样我最终会花费更多的CPU时间进行初始化等等,然后让一个长期服务处于休眠状态。

有人有这方面的经验吗?

0 个答案:

没有答案