当PendingIntent已经在历史堆栈顶部

时间:2015-06-26 16:52:09

标签: android android-intent android-activity notifications android-pendingintent

我正在尝试从通知按钮启动活动 A (使用PendingIntent)。当我点击此通知按钮并且 A 位于历史堆栈之上时,它的行为不正确:

它应该做什么:

  • 活动 A 必须在historystack上重复,这样:
    1. 当历史堆栈顶部的活动 A
      之前:
      [A,......旧活动...]
      后:
      [A,A,......旧活动......]
    2. 当活动 A 不是在历史堆栈之上时(默认行为)
      之前:
      [B,...旧活动...]
      后:
      [A,B,...旧活动......]

会发生什么:

  1. onCreate已被调用,但getIntent().getExtras()null
  2. 活动 A 已被替换且未重新创建(我想要重复)。
  3. 我尝试了很多事情:Intent.FLAG*PendingIntent.FLAG*,但都没有成功。

    编辑1: 我试过这些常数:

    • Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK
    • Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP(但我不想透露顶部)

    代码(部分):

    Intent intentCancel = new Intent(getApplicationContext(), ChallengeProposalActivity.class);
    //intent.setAction(String.valueOf(System.currentTimeMillis()));
    //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.putExtra(ChallengeProposal.NAME, proposal);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intentCancel, 0);
    

    代码(完整):http://pastebin.com/vNuEkBvi

    我该怎么办?

    相关问题:

    PendingIntent not working when adding extras in intent

    Duplicate MainActivity When Enter From Notification

1 个答案:

答案 0 :(得分:1)

您已创建intentCancel个对象,但尝试在intent对象中添加额外内容:

Intent intentCancel = new Intent...
intent.putExtra...