Alarmmanager意外行为

时间:2013-10-29 15:30:41

标签: android process notifications alarmmanager

    GregorianCalendar cal = new GregorianCalendar();
    cal.set(GregorianCalendar.HOUR_OF_DAY, 10);
    cal.set(GregorianCalendar.MINUTE, 12);
    cal.set(GregorianCalendar.SECOND, 0);
    cal.set(GregorianCalendar.MILLISECOND, 0);
    if(cal.before(new GregorianCalendar())){
        cal.add(GregorianCalendar.DAY_OF_MONTH, 1);
    }       

    myalarm = (AlarmManager)getSystemService(ALARM_SERVICE);

    Intent mainIntent = new Intent(this, myReceiver.class);         
    pIntent = PendingIntent.getBroadcast(this, 0, mainIntent, 0);

    myalarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000*60*60*24, pIntent);

这是设置闹钟的代码。 myReceiver是一个扩展的BroadcastReceiver,它启动一个服务,每天都会触发一个通知......(从警报设置中可以看出)。

我要疯狂因为:

1)当我启动我的应用程序并且警报已过期时如果我从最近的应用程序列表中刷出我的应用程序没有什么奇怪的事情发生。在模拟器进程列表中“设备”选项卡上的DDMS面板中,我的应用程序消失。 < ----这就是我应该永远发生的事情

但....

2)当我启动应用程序且警报尚未过期时,通知尚未发送,我等待警报响起,我收到通知

... THEN

当我在6到30秒之后将应用程序从最近的应用程序列表中滑出时,通知显示为AGAIN,并且在模拟器进程列表的“设备”选项卡上的DDMS面板中,我的应用程序再次出现。如果我点击它,我的应用程序的主要活动开始。

我可以永远重现这种行为,直到......

3)我在没有点击的情况下刷掉通知。此时不再发送通知但是在模拟器进程列表中的设备选项卡上的DDMS面板中我的应用仍然存在,因为滑动通知不会杀死应用程序但是在最近的应用程序列表中我的应用程序不是'再来了。

WHY ????怎么了?

其他信息: 使用Log我已经看到,即使应用程序在最近的应用程序列表中不再存在,我的BroadcastReceiver类中的onReceive方法也会被调用。

0 个答案:

没有答案