2014-11-03 51 views
0

我正在开发一个应用程序,它必须显示一些通知,并且必须每天下载一些数据两次,所以我创建了一个启动我的通知的服务和一个BroadcastReceiver这应该(取决于时间)运行我的NotificationService和以后也我的DownloadService。 我现在的问题是,我创建的AlarmManager-alarm应该每小时调用一次(如果少于或多于1分钟或2分钟就不重要),它会执行大约3到4小时,但随后它会随机运行并且多次例如在7点和8点之间。Android AlarmManager随机发射

我不知道问题出在哪里能如此这里是我的代码:

活动:

Intent myIntent = new Intent(OverviewActivity.this, Receiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(OverviewActivity.this, 0, myIntent, 0); 

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.cancel(pendingIntent); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, notifCal.getTimeInMillis(), AlarmManager.INTERVAL_HOUR, pendingIntent); 

接收机:

public class Receiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent arg1) { 
     Intent notificationService = new Intent(context, NotificationService.class); 
     context.startService(notificationService);<br/> 
    } 

} 

在此先感谢, momob114

回答

1

每当您的活动开始时,您的应用程序将取消并重新创建闹钟,这可能是看似随机调用的原因(实际上可能与您打开应用程序的时间相对应,或一小时后)。

的情况下,请注意你仍然要做到这一点,而不是取消前一个报警,你可以叫:

PendingIntent pendingIntent = PendingIntent.getBroadcast(OverviewActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

保持也记住该设备的重启将清除任何警报,你可能有组。所以你可能会想要创建一个BroadcastReceiver监听android.intent.action.BOOT_COMPLETED动作,然后设置你的重复闹钟。

+0

首先谢谢你的回答。我仍在测试,但这似乎为我工作。 – MoBr114 2014-11-04 07:11:13

+0

Nah在8点12分收到通知,8点43分收到通知 – MoBr114 2014-11-04 07:59:53