我有一个几乎不需要用户交互但需要地理围栏的应用,我能在后台服务中完全运行吗?
当服务首次运行时将存在一个Activity。这个Activity将启动一个服务并在BOOT_COMPLETED时注册一个BroadcastReceiver,因此服务将在启动时开始运行。这个Activity很可能永远不会再次运行。
该服务将设置一个闹钟定期触发,这将导致IntentService从网络下载位置列表。然后,该IntentService将在这些位置周围设置地理围栏,并创建PendingIntents,当接近这些位置时将触发这些PendingIntents。接着,这些PendingIntents将导致另一个IntentService执行某些操作。
除了安装后第一次启动Activity外,所有这些都需要在后台进行,没有用户交互。因此,该Activity将不与LocationClient或任何位置服务交互。
实际上,我已经使用了proximityAlerts来设置这个应用程序,但出于电池寿命方面的考虑,我希望转移到新的Geofencing API。然而,我听说在服务中使用LocationClient可能会出现一些问题。具体来说,我听到的是(对不起,没有参考资料,只是 hearsay claims):
- 位置客户端依赖UI可用性进行错误处理 - 当从后台线程调用时,LocationClient.connect() 假定它是从主UI线程(或其他带有事件looper的线程)调用的,如果我们从在后台线程运行的服务中调用此方法,则不会调用连接回调函数
当我调查时,我看不到为什么会出现这种情况,或者为什么它会阻止我做我想做的事情。我希望它几乎可以成为proximityAlerts的替代品...
请问有人能解释一下吗?
当服务首次运行时将存在一个Activity。这个Activity将启动一个服务并在BOOT_COMPLETED时注册一个BroadcastReceiver,因此服务将在启动时开始运行。这个Activity很可能永远不会再次运行。
该服务将设置一个闹钟定期触发,这将导致IntentService从网络下载位置列表。然后,该IntentService将在这些位置周围设置地理围栏,并创建PendingIntents,当接近这些位置时将触发这些PendingIntents。接着,这些PendingIntents将导致另一个IntentService执行某些操作。
除了安装后第一次启动Activity外,所有这些都需要在后台进行,没有用户交互。因此,该Activity将不与LocationClient或任何位置服务交互。
实际上,我已经使用了proximityAlerts来设置这个应用程序,但出于电池寿命方面的考虑,我希望转移到新的Geofencing API。然而,我听说在服务中使用LocationClient可能会出现一些问题。具体来说,我听到的是(对不起,没有参考资料,只是 hearsay claims):
- 位置客户端依赖UI可用性进行错误处理 - 当从后台线程调用时,LocationClient.connect() 假定它是从主UI线程(或其他带有事件looper的线程)调用的,如果我们从在后台线程运行的服务中调用此方法,则不会调用连接回调函数
当我调查时,我看不到为什么会出现这种情况,或者为什么它会阻止我做我想做的事情。我希望它几乎可以成为proximityAlerts的替代品...
请问有人能解释一下吗?