Android在应用程序进入后台时发出通知(不是单个活动)
我有一个Android应用程序,由3个活动A、B和C组成:Android在应用程序进入后台时发出通知(不是单个活动),android,android-activity,background,notifications,Android,Android Activity,Background,Notifications,我有一个Android应用程序,由3个活动A、B和C组成: A是应用程序本身(常规活动) B是设置屏幕(由PreferenceActivity创建) C是关于屏幕(常规活动) 这些活动之间的关系如下: A是主要活动 B的父母是A C的父母是B 活动A在进入后台时会引发通知,这是通过在A的onStop()方法中调用NotificationManager的notify()来实现的 当用户启动应用程序时,它从活动A开始,然后如果用户按下home按钮,则会在显示home屏幕时立即发出通知。单击通
- A是应用程序本身(常规活动)
- B是设置屏幕(由PreferenceActivity创建)
- C是关于屏幕(常规活动)
- A是主要活动
- B的父母是A
- C的父母是B
Marco您可以设置一个布尔标志,在发出通知之前检查该标志,并在启动活动B之前将其设置为“false” 当然,通过这种方式,您必须在活动B和C中执行相同的操作,以便他们也发出通知
或者,正如在您可以实现自己的应用程序类并在那里获取回调之前所暗示的那样。只需创建一个布尔标志
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);
你可以发布你尝试过的东西吗?让B和C发出通知也会导致活动之间的代码重复,如何避免?你可以发布一个链接到你提出的第二个备选方案吗?嗯,应用程序对象是(简化的)一个应用程序范围的单例对象,android系统实例化并保证它是一个单例。从您的活动中,您可以通过mActivity.getApplication()访问它。要实现您自己的代码,您必须实现您自己的应用程序子类,并在android清单中注册它。谢谢。然后我必须在每个活动的onStop()中发出通知,对吗?还是有更简洁的方法来避免重复代码?谢谢,我是按照你的建议以及@benjamin-k在他之前的回答(扩展应用程序类)中的建议来做的。有一点需要注意:我必须将sendNotification()调用放在onPause()中,而不是onStart()中,否则它将无法工作。