2017-02-15 57 views
0

我有一个通知,其中有两个按钮。因此,当用户点击此通知(不是通知中的按钮,直接通知)时,它会启动主屏幕。从通知开始活动时处理后备工作

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

当用户与对话进行交互,然后点击主屏幕上的某个按钮时,它开始一个新的活动。

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

现在我面临的问题是,当它回来的主要活动(活动1)再次showes对话,因为它使用从通知开始主屏幕上的相同意向

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

这就是我的onStart的样子。

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

将值保存在sharedPreference –

+0

有没有其他方式通过框架? –

+0

完全不是,如果你想将它保存在本地缓存中使用的静态变量(true,false),但这是不好的做法。您必须使用sharedPreference –

回答

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不具备足够的内存隐藏的活动比较哪些能够被删除。