使用Alarm Manager在特定时间设置通知,但不会按时调用我的接收器类

时间:2018-02-14 05:21:33

标签: android notifications alarmmanager

        Long time = prefs.getLong("dailynoti", 0);  
        Intent intent = new Intent(cn, NotificationReceiver.class);
        intent.putExtra("Desc", "Description...");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(cn, 1055, intent,0);
        AlarmManager alarmManager = (AlarmManager) cn.getSystemService(cn.ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,time, AlarmManager.INTERVAL_DAY, pendingIntent);

和我的mainifest文件

    <receiver
        android:name="com.mypackage.NotificationReceiver"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.REBOOT" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

这个相同的代码在同一个项目中使用但现在在同一项目中另一个模块它将无法工作广播接收器在给定时间不会调用 我的通知代码在Receiver文件中,但Receiver类没有调用。 我检查了所有的事情,如时间也得到了正确。那有什么问题呢。请帮忙......

我使用了许多解决方案,如

PendingIntent pendingIntent = PendingIntent.getBroadcast(cn, 1055, intent, PendingIntent.FLAG_CANCEL_CURRENT
//FLAG_NO_CREATE
//FLAG_UPDATE_CURRENT

1 个答案:

答案 0 :(得分:0)

我认为可以使用的一种方法是alarmManager.setRepeating()使用alarmManager.set(),而当警报触发时,则设置下一个警报。这将为您提供几乎准确的结果。为何几乎?因为Android M.中引入了Doze mode所以这会给你0到+5分钟的延迟。