簡體   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