应用程序启动时不显示通知

时间:2012-08-13 03:02:13

标签: java android notifications alarmmanager

我有一个应用程序,如果有任何事件发生,它会使用AlarmManager来安排通知。这很好用。

问题是,每次用户实例化应用程序时,如果它是事件日,它将显示StatusBar Notification。我想仅在应用程序未处于活动状态(即关闭)时显示StatusBar通知。

@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);
            }
        }
} 

1 个答案:

答案 0 :(得分:0)

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

来自AlarmManager.cancel()上的Android文档:

  

删除具有匹配Intent的所有警报。任何类型的警报,其Intent与此匹配(由filterEquals(Intent)定义)将被取消。

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

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