从通知开始活动时处理背压

时间:2017-02-15 02:27:43

标签: android android-intent notifications onbackpressed

我有一个通知,里面有两个按钮。因此,当用户点击此通知时(不在通知中的按钮上,直接在通知上),它会启动主屏幕。

在我的主屏幕中,我显示的对话框提供了与通知中显示的相同的选项。

当用户与对话框交互,然后,稍后点击主屏幕中的某个按钮,它会启动一个新活动。

当用户按下已启动的新活动的后退按钮时。它回归到主屏幕。

现在我面临的问题是,当它返回主Activity(活动1)时,它再次显示该对话,因为它使用的是从通知启动主屏幕的相同Intent

我不希望该对话再次显示,因为用户已经与该对话进行了互动。我该如何处理?

这就是我的onStart的样子。

@Override
protected void onStart() {
    super.onStart();
    String action = getIntent.getAction();
    Log.d("MainScreen", "onStart: action " + action);
    if(action.equals(NOTIFICATION_CLICK)){
        showDialogue();
    }
}

1 个答案:

答案 0 :(得分:0)

主屏幕中的哪个方法显示了对话框(onCreate,onStart或onResume)?

我猜你在onResume中显示了对话框。因为当用户转到其他活动时,会调用onStop。否则,按用户单击后退按钮,onstart和onResume被调用。

我的建议: 解决方案1:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    if (savedInstanceState == null && isFromNotification()) {
        showDialog()
    }
}

解决方案2:

private boolean isShow;
    protected void onStart() {
    super.onStart();
    if (isShow || !isFromNotification()) return;
    Toast.makeText(this, "I love you", Toast.LENGTH_LONG).show();
    isShow = true;
}

但我更喜欢解决方案1,它更安全,因为如果android没有足够的内存,隐藏的活动可以删除。