Java Don';应用程序启动时不显示通知

Java Don';应用程序启动时不显示通知,java,android,notifications,alarmmanager,Java,Android,Notifications,Alarmmanager,我有一个应用程序,它使用AlarmManager在有任何事件发生时安排通知。这很有效 问题在于,每次用户实例化应用程序时,如果是事件日,它都会显示状态栏通知。我只想在应用程序未激活(即关闭)时显示状态栏通知 要防止AlarmManager在应用程序运行时创建通知,只需在onResume()中使用,然后在onPause()中重新创建报警 从AlarmManager.cancel()上的Android文档中: 移除任何具有匹配意图的警报。任何类型的报警,其目的与此报警相匹配(由filterEqual

我有一个应用程序,它使用AlarmManager在有任何事件发生时安排通知。这很有效

问题在于,每次用户实例化应用程序时,如果是事件日,它都会显示状态栏通知。我只想在应用程序未激活(即关闭)时显示状态栏通知


要防止AlarmManager在应用程序运行时创建通知,只需在onResume()中使用,然后在onPause()中重新创建报警

从AlarmManager.cancel()上的Android文档中:

移除任何具有匹配意图的警报。任何类型的报警,其目的与此报警相匹配(由filterEquals(目的)定义),都将被取消

这表明您不必保留对旧报警的引用,任何具有匹配意图的报警都将被取消


最后,我不建议将代码移动到onCreate()和onDestory,因为用户可以暂停应用程序(例如使用Home按钮),然后由操作系统终止应用程序。在这种情况下,永远不会调用onDestroy()方法。如果在应用程序处于后台时出现通知是不可接受的,请阅读以下关于如何跟踪应用程序何时实际被终止的详细答案:

好的,Sam,我按照你的建议做了。取消onResume()上的报警,并在Pause()上重新创建。我面临的问题是,由于通知是在onCreate()上实例化的,因此它首先运行通知,然后可能会取消onResume()上的报警,这与此目的背道而驰。我不知道还能怎么做?您应该只在onPause()中创建报警,而不在onCreate()中创建报警。正如您所说,在onCreate()中启动通知只是在onResume()中取消通知是没有意义的。
@Override
public void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_calendar_view);

        if (notification_value == true) {
            int dayOfEvent = day;
            if (notification_day == 1) {
                dayOfEvent = day + 1;

            }
            if(isHoliday(dayOfEvent, month, year))
            {
                String mn = monthName[month-1];
                String date_string = setParameter(year, mn, dayOfEvent);
                startAlarm(year, (month-1), day, hour, mins, date_string);
            }
        }
}