我有一个由3个活动A,B和C组成的Android应用程序:
活动之间的关系如下:
活动A在转到后台时会发出通知,这是通过在A的onStop()方法中调用NotificationManager的notify()来完成的。
当用户启动应用程序时,它从活动A开始,然后如果用户按下主页按钮,则会在显示主屏幕时立即引发通知。单击通知将使用户返回应用程序。
一切似乎都有效,但现在有一种我不喜欢的行为: 当用户启动应用程序然后进入设置(因此显示活动A然后显示B)时,也会引发通知(因为A已经转到后台以显示B)。
这不是必需的:只有当应用程序转到后台时才会引发通知,无论用户正在查看哪个活动。
如何实现这种正确的行为?
提前致谢, 马可
答案 0 :(得分:1)
您可以设置一个布尔标志,在提升通知之前检查该标志,并在启动活动B之前将其设置为“false”。
当然,这样你就必须在活动B和C中做同样的事情,以便他们提出通知。
或者,正如之前暗示的那样,你可以实现一个自己的应用程序类并在那里获取回调。
答案 1 :(得分:1)
只需创建一个布尔标志shouldNotify
,并在打开其他活动时将其设置为false。如果没有你的代码,我无法确切地告诉你如何实现它,但这里是一个让这个想法得以实现的例子:
private boolean shouldNotify = true;
@Override
public void onStart(){
super.onStart();
shouldNotify = true;
}
@Override
public void onStop(){
super.onStop();
if(shouldNotify){
sendNotification();
}
}
// Where you need to put these next snippets depends on how you've made your Activity
/*
* Launching settings activity
*/
shouldNotify = false;
Intent settingsIntent = new Intent(this, YourSettingsActivity.class);
startActivity(settingsIntent);