我有一个通知,里面有两个按钮。因此,当用户点击此通知时(不在通知中的按钮上,直接在通知上),它会启动主屏幕。
在我的主屏幕中,我显示的对话框提供了与通知中显示的相同的选项。
当用户与对话框交互,然后,稍后点击主屏幕中的某个按钮,它会启动一个新活动。
当用户按下已启动的新活动的后退按钮时。它回归到主屏幕。
现在我面临的问题是,当它返回主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();
}
}
答案 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没有足够的内存,隐藏的活动可以删除。