定期从一个活动向另一个活动发送数据

时间:2014-07-20 13:35:30

标签: android regex google-maps android-volley activity-lifecycle

我每隔30秒定期通过Fused Location Provider获取我在Main Activity中的位置。我没有使用服务或其他任何东西。我只是在用户申请时获得位置。

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

1 - 我想定期将主要活动的位置数据发送到第二个活动(每次调用onLocationChange方法30秒),以移动我当前位置的标记。我如何定期发送位置数据?我把代码放在哪里?在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是否可以在每项活动中展示? (不仅在主要活动中showAlertDialog方法和LocationListener存在)。

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

1 个答案:

答案 0 :(得分:1)

只有一项活动在任何时候都有效且正在运行。你可能会更好地使用2个片段或者你的MainActivity中的另一个MapView,你可以看到或消失,而不是有不同的活动。

或者您使用的服务可以在后台与您的任何活动并行运行。