繁体   English   中英

定期将数据从一项活动发送到另一项活动

[英]Send data from one activity to another regularly

我每30秒就会通过融合定位服务提供商定期在主要活动中获取自己的位置。 我不使用服务或其他任何服务。 我只是在用户在应用程序中时获取位置。

在“主要活动”中,我有一个按钮,按下该按钮时,进入“第二个活动”并在地图上显示我当前的位置(此行:googleMap.setMyLocationEnabled(true))。

1-我想定期将自己的位置数据从“主要活动”发送到“第二个活动”(每30秒调用onLocationChange方法),以移动我当前位置的标记。 如何定期发送位置数据? 我在哪里放置代码呢? 在onChangedLocation方法? 还是根本没有必要?更改后我的位置会自动移动吗?)

另外,我通过Volley库以OnLocationChanged方法将当前位置发送到服务器,如下所示:

@Override
public void onLocatuionChanged(Location location){
if(location != null)
    sendLocation(location);
}

private void sendLocation(Location location){
Map<String, String> params = new HashMap<String, String>();
params.put("latitude", String.valueOf(location.getLatitude();
params.put("longitude", String.valueOf(location.getLongitude();
jsonObjReq = new VolleyCustomReq(Method.POST,
URL, params,
new Listener<JSONObject>(){
@Override
public void onResponse(JSONObject response){
if(response != null)
    if(response.optString("type").equalsIgnoreCase("1")
        showAlertDialog1();
    else if(response.optString("type").equalsIgnoreCase("2")
        showAlertDialog2();
    else if(response.optString("type").equalsIgnoreCase("3")
        showAlertDialog3();
    else if(response.optString("type").equalsIgnoreCase("addNewMarker")
        addNewMarkerOnMapAsDestinationAndMakePathBetweenBothOfYou();
    ...
}
...
}
}

如果服务器响应,则根据响应类型,我想做一些事情; 例如向用户显示相关消息,在地图上添加标记作为目的地,并在两个标记之间建立路径。

2-即使我们处于其他活动中,onLocationChanged方法也可以使用吗?

3-如果是,AlertDialog是否可以在每个活动中显示? (不仅在Main Activity中,还有showAlertDialog方法和LocationListener)。

4-有没有更好的方法来处理回应和做相关的事情?

任何时候都只有一个活动处于活动状态并正在运行。 在MainActivity中使用2个片段或仅一个附加MapView可能会更好,您可以使其可见或消失,而不必进行其他活动。

或者,您使用一项服务,该服务可以在后台与任何“活动”并行运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM