[英]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.