java启动活动两次,即使使用launchMode=“singleTask”
我有一个活动,展示两个目标不一致的旅游细节
首先 该活动有一个预订按钮,可重定向至银行支付,并在支付成功或失败后返回活动。这就是为什么我在清单中设置启动模式来阻止活动重新创建
安卓:launchMode="singleTask"
秒
该活动有一个按钮,可以重定向到类似的巡演,然后我必须在startActivity()
之前调用finish();
使意图生效
onNewIntent()
在活动中获取第一部分的数据
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent.getData() != null) {
Helper.logDebug("fsfsfsgsgsgs", "inside get data not null");
String query = intent.getData().getQuery();
Helper.logDebug("fsfsfsgsgsgs","query is "+ query);
if (query!=null && query.contains("Status=OK")) {
if (frgBtmReserve!=null){
frgBtmReserve.dismiss();
}
String count=query.substring(16);
Helper.logDebug("fsfsfsgsgsgs","count is "+ count);
frgObjectInfo.updateReserveCount(count);
Helper.logDebug("fsfsfsgsgsgs", "inside status ok");
Helper.notifyUserDone(getResources().getString(R.string.success_tour_reserve), this,R.drawable.ic_tick);
} else {
frgBtmReserve.dismiss();
Helper.logDebug("fsfsfsgsgsgs", "inside status nok");
Helper.notifyUserWarning(getResources().getString(R.string.error_tour_reserve), this);
}
}
}
点击第二部分,该部分应创建当前活动的新实例,但由于活动的启动模式为^{finish()
之前才起作用
Intent intent = new Intent(context, ActivityShowObject.class);
intent.putExtra(ActivityShowObject.INTENT_KEY_TYPE, Obj.TYPE_TRAVEL);
intent.putExtra(ActivityShowObject.INTENT_KEY_COLOR, color);
intent.putExtra(ActivityShowObject.INTENT_KEY_OBJ_ID, obj.getAgencyId());
((AppCompatActivity)context).finish();
startActivity(intent);
Animatoo.animateShrink(context);
这是我的问题 想象一个用户正在观看一些类似的旅行,然后按back,应用程序返回到第一步!你们有什么建议吗
# 1 楼答案
除掉
android:launchMode="singleTask"
首先。我认为这是一个错误的用例,让你更加困难
有两种情况:
对于#2,使用正常的
startActivity
路线,这将允许正常的反向导航对于#1,你也可以使用普通的
startActivity
,但我有一种感觉,当他们成功付款时,你不希望他们按back键返回巡演,但如果他们付款失败,你是否希望允许他们返回如果是这种情况,你可以在导航到#1支付场景时使用
startActivityForResult
当他们成功完成付款时,请致电
如果他们失败了
然后,当他们回击时,结果被传播到第一个活动,您可以使用它来调用
finish()
或不调用