[英]Communication between running activities?
我是android新手,目前正在開發quest / tresurehunt應用程序。 它是一個原型,將在現場進行評估,因此,我希望實現某種作弊功能,以在應用程序在測試期間崩潰時跳過檢查點。
我的應用程序的工作方式是,當您選擇一個任務時,將加載一個活動以處理所有檢查點和用戶位置(ActivityAdapter.java)。 此活動將打開不同的導航工具活動,並根據下一個使用意圖的檢查點將信息傳遞給它們。 我在應用程序中實施了長按事件,我想激活跳過/作弊功能。 我的問題是我不知道該怎么做。
ActivityAdapter.java的位置更改事件:
public void onLocationChanged(Location location) {
location.distanceBetween(location.getLatitude(), location.getLongitude(), lat, lng, dist);
if (dist[0]<= 10) {
if (cid == checkpoints.size()) {
Intent intent = new Intent(ActivityAdapter.this, SuccessActivity.class);
intent.putExtra("title", checkpoints.get(cid).get("title"));
startActivity(intent);
} else {
new loadAndStartQuest().execute();
}
}
}
loadAndStartQuest()只是找到下一個檢查點並啟動正確的活動(navigationtool)。 我嘗試創建ActivityAdapter的對象並設置一個變量,並將其添加到無效的if語句中。 我猜這是因為它將創建活動的另一個實例,而不影響當前/正在運行的實例。 那么您如何在兩個正在進行的活動之間進行交流?
要將數據從Activity1發送到正在運行的Activity2,您必須執行以下步驟:
在Manifest.xml中,為Activity2設置啟動模式“ singleTask”
<activity android:name="Activity2" android:launchMode="singleTask">
放入額外內容並從Activity1啟動Activity2(如果Activity2之前已啟動,則意圖將發送到現有實例)。
Intent intent = new Intent(getContext(), Activity2.class); intent.putExtra("CHECK_POINT", checkPointData); startActivity(intent)
在Activity2中重寫onNewIntent()方法
protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); onNewCheckPoint(); } private void onNewCheckPoint(){ Intent intent = getIntent(); Bundle extras = intent.getExtras(); //in this moment, you can process data, like you want. }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.