我正在设计一个应用程序,它将从许多传感器收集不同的数据,并将它们连续存储在数据库中。我使用的传感器就像Google Play的融合位置提供商和活动检测。 (也有一些用户界面,但UI几乎不会启动,因此几乎所有内容都在后台发生)
我有两种不同的方法可以做到这一点:
所以我会开始一个长期服务(带有STICKY标志),它会在后台运行。该服务只会注册定期位置和活动更新,并且 - 在更新之间 - 只是什么都不做。
优点:应用只会初始化一次
缺点:服务全天候运行
现在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时间进行初始化等等,然后让一个长期服务处于休眠状态。
有人有这方面的经验吗?