Fused Location Provider 无故停止
Posted
技术标签:
【中文标题】Fused Location Provider 无故停止【英文标题】:Fused Location Provider Stops With No Reason 【发布时间】:2016-04-09 08:19:08 【问题描述】:我正在使用 Fused location provider 来根据用户需要获得频繁的位置更新。使用 BroadCast Reciever 通过 LocationRequest 类接收位置更新。
我正在使用待定意图初始化接收方。
mPendingIntent = PendingIntent.getBroadcast(this, 1, mIntentService, 0);
并从融合提供商处获取位置更新。
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, mPendingIntent);
所有这些在一段时间内都进展顺利。过了一段时间后说 2 小时或更长时间,然后突然 BroadCast Reciever 没有收到任何更新,而且它是如此不寻常,以至于它没有理由停止。
我没有停止应用程序或停止从 FusedLocationApi
接收位置更新【问题讨论】:
你看logcat了吗?里面有什么有趣的吗?另外,这仅在 Marshmallow 上还是在较旧的 api 上? This SO issue可能与您的询问有关。 @Shmuel 未指定给任何版本,它很常见。 logcat 没什么特别的 @adjuremods 没有可接受的答案,我将如何尝试。 【参考方案1】:我认为您的
FusedLocationApi
没什么问题。问题是BroadcastReceiver
.
当前正在执行BroadcastReceiver
的进程(即当前在其onReceive(Context, Intent)
方法中运行代码)被认为是前台进程,并且将由系统保持运行,除非在内存压力极大的情况下.
从onReceive()
返回后,BroadcastReceiver
将不再活动。
这意味着对于运行时间较长的操作,您通常将 Service
与 BroadcastReceiver
结合使用,以使包含进程始终处于活动状态你的操作。
了解更多click here
【讨论】:
我使用了 IntentService,这个问题也发生在我身上以上是关于Fused Location Provider 无故停止的主要内容,如果未能解决你的问题,请参考以下文章
Fused Location Provider 是不错的选择吗?
使用 Location Manager 和 Fused Location Provider Api 获取位置有啥区别?
Fused Location Provider - 获得高精度
使 Fused Location Provider LocationClient 更易于使用