我有一个应用程序,如果有任何事件发生,它会使用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);
}
}
}
答案 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