我有一个活动 A 像开始活动一样被触发。
在 oncreate 中,如果缺少某些数据,则活动 A 会创建一个带有 startActivity 的新活动 B。之后它还会调用finish()。像这样,我获得了一个只有活动 B 的 backstack。
到目前为止,一切都很好。
现在,当活动 B 中的某些任务完成时,它调用 startactivity(activityA) 并随后调用自身的 finish()。它还传递了一些额外内容,活动 A 将毫无问题地读取它们。
private void goToA(){
Intent goHome= new Intent(this, A.class);
goHome.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
goHome.putExtra("test", "test 1");
startActivity(goHome);
finish();
}
现在我有一个由活动 A 形成的 backstack。对吗?事实上,如果我按下“返回”,我就会回到启动器。
好的,现在,在活动 A 上,在操作期间,我创建了一个通知,其中包含一个挂起的意图。意图使用新的附加值调用活动 A 本身,但使用之前从活动 B 传递的相同参数。
Intent notifyIntent= new Intent(MyApplication.getAppContext(), A.class);
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
notifyIntent.putExtra("test", "test 2");
PendingIntent intentHome= PendingIntent.getActivity(MyApplication.getAppContext(),2,notifyIntent, PendingIntent.FLAG_CANCEL_CURRENT);
Notification notificationToSend= new Notification(R.drawable.icon_notification, "Tracciamento avviato", System.currentTimeMillis());
notificationToSend.setLatestEventInfo(MyApplication.getAppContext(), "Tracciamento sgàget!","Seleziona per tornare al tracciamento", intentHome);
notificationToSend.flags |= Notification.DEFAULT_SOUND;
notificationToSend.flags |= Notification.FLAG_NO_CLEAR;
现在,如果我回到启动器,我打开通知区域并点击我的通知,我按预期返回活动 A,但是当我阅读 onResume 中的附加内容时,我得到活动 B 传递的那些(“测试 1")!
我不认为这是一个常见的“正确更新您的pendingintent”问题,因为第一个startactivity 根本不涉及任何pendingintent。有什么建议吗?