警报管理器和BroadCastReciever未触发

时间:2014-04-26 13:31:11

标签: android alarmmanager android-alarms

以下代码onCreate中有一个Activity类。当我进入该活动时,我期望每秒输出一次日志,但没有任何反应。

private void setupAlarm() {

    AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this,AdhIntent.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this,
            0, intent, 0);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000, pendingIntent);
}


private class AdhIntent extends BroadcastReceiver {

    public AdhIntent() {
        System.out.println("2014");
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("2014");

    }

}

1 个答案:

答案 0 :(得分:1)

首先,AdhIntent必须是public类。否则,Android无法创建它的实例。

其次,AdhIntent需要在<receiver>元素的清单中注册。否则,Android无法通过您的PendingIntent发送广播。

您也不需要getApplicationContext() - 只有在您完全准确地知道

时才使用它。

最后,使用AlarmManager来控制每一秒对AlarmManager的使用并不是特别好。充其量,这对于书籍示例或轻量级测试来说非常好。如果你真的需要每秒控制某个地方,那么有更好的解决方案,假设每秒获得控制权实际上是一个明智的选择。