我已关注此tutorial,现在我正在使用Google地图片段进行工作。
我需要跟踪我的应用用户的位置 - 该片段有一个onLocationChanged
方法,当位置发生变化时会触发该方法,并且在该方法上我更新我的数据库使用用户的位置,在地图上绘制用户以及更多内容。
唯一的问题是 - 我希望还有一个服务,它会始终向我的数据库发送更新并更新每个用户的位置,同时应用关闭< /强>
我应该以某种方式将onLocationChanged
方法放在片段和服务中吗?因为当应用程序位于前台时,除了更新数据库之外,我还会在onLocationChanged
上执行更多操作,例如绘制地图等。
答案 0 :(得分:0)
为什么不让您的服务接收所有位置更新,并使用LocalBroadcastManager
通过位置更新来广播对使用intent过滤器注册内部BroadcastReceiver
的任何片段或活动的位置更新?以下是关于如何使用LocalBroadcastManager
的{{3}}。另外,这是我如何制作内部BroadcastReceivers
:
static class InternalBroadCastReceiver extends BroadcastReceiver{
MyFragment mMyFragment;
public InternalBroadCastReceiver(MyFragment fragment){
mMyFragment = fragment;
}
@Override
public void onReceive(Context context, Intent intent) {
final MyFragment fragment = mMyFragment;
if (fragment != null) {
Location location = intent.getParcelableExtra("myLocation");
//... Do something with your location here, for example:
fragment.updatemap(location);
}
}
}