2

我正在使用Fused 位置提供程序根据用户需要获取频繁的位置更新。使用广播接收器通过LocationRequest类接收位置更新。

使用挂起的意图我正在初始化接收者。

    mPendingIntent = PendingIntent.getBroadcast(this, 1, mIntentService, 0);

并从融合提供商处获取位置更新。

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, mPendingIntent);

所有这些在一段时间内都进展顺利。过了一段时间说 2 小时或更长时间后,BroadCast接收器突然没有收到任何更新,而且它非常不寻常,没有理由停止它。

我没有停止应用程序或停止从FusedLocationApi 接收位置更新

4

1 回答 1

0

我认为您的FusedLocationApi. 问题是 BroadcastReceiver

当前正在执行 a 的进程BroadcastReceiver(即当前正在运行其onReceive(Context, Intent)方法中的代码)被认为是前台进程,并且将由系统保持运行,除非在极端内存压力的情况下。

一旦您从 中返回onReceive()BroadcastReceiver则不再处于活动状态。

这意味着对于运行时间较长的操作,您通常将 aService与 a 结合使用,BroadcastReceiver以在整个操作期间保持包含进程的活动状态。

更多请点击这里

于 2016-06-13T12:06:46.577 回答