0

我已按照本教程进行操作,现在我有一个使用谷歌地图片段的工作活动。

我需要跟踪我的应用程序用户的位置 - 片段有一个onLocationChanged在位置更改时触发的方法,并且在该方法上我使用用户的位置更新我的数据库,在地图上绘制用户等等。

唯一的问题是 - 我还想拥有一项服务,该服务将始终向我的数据库发送更新并更新每个用户的位置,即使在应用程序关闭时也是如此。

我应该onLocationChanged以某种方式将方法放在片段和服务中吗?因为当应用程序在前台时,除了更新数据库之外,我还会做更多的事情onLocationChanged,比如绘制地图等。

4

1 回答 1

0

为什么不让您的服务接收所有位置更新,并使用将位置更新的意图广播到向意图过滤器LocalBroadcastManager注册内部的任何片段或活动?BroadcastReceiver这是一个关于如何使用的教程LocalBroadcastManager。另外,这是我如何制作内部的示例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);
        }
    }
}
于 2016-02-18T01:05:22.253 回答