我正在使用融合位置提供商根据用户需求频繁更新位置信息。使用 BroadCast接收器通过 LocationRequest 类接收位置更新。
使用待定意图我正在初始化接收器。
mPendingIntent = PendingIntent.getBroadcast(this, 1, mIntentService, 0);
从融合提供商处获取位置更新。
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, mPendingIntent);
所有这些都在一段时间内进展顺利。经过一段时间说了2个小时或更长时间后, BroadCast Reciever 突然没有收到任何更新,而且它非常不寻常,因此没有理由停止它。
我没有停止申请或停止从 FusedLocationApi
收到位置更新答案 0 :(得分:0)
我认为你的
FusedLocationApi
没有错。问题是BroadcastReceiver
。
当前正在执行BroadcastReceiver
的进程(即当前在其onReceive(Context, Intent)
方法中运行代码)被认为是一个前台进程,并且将继续由系统运行,除非在案例中极度记忆压力。
从onReceive()
返回后,BroadcastReceiver
不再有效。
这意味着,对于运行时间较长的操作,您通常会将 Service
与 BroadcastReceiver
结合使用以保持包含进程处于活动状态在整个操作期间。
了解更多click here