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 将不再活动。

这意味着对于运行时间较长的操作,您通常将 ServiceBroadcastReceiver 结合使用,以使包含进程始终处于活动状态你的操作。

了解更多click here

【讨论】:

我使用了 IntentService,这个问题也发生在我身上

以上是关于Fused Location Provider 无故停止的主要内容,如果未能解决你的问题,请参考以下文章

Fused Location Provider 是不错的选择吗?

使用 Location Manager 和 Fused Location Provider Api 获取位置有啥区别?

Fused Location Provider - 获得高精度

使 Fused Location Provider LocationClient 更易于使用

从 Fused Location Provider 获取 GPS 或网络提供商

如何在 Service 类中使用 Fused Location Provider?