Android 报警管理器和广播接收器未触发

Android 报警管理器和广播接收器未触发,android,alarmmanager,android-alarms,Android,Alarmmanager,Android Alarms,我在onCreate中为我的一个活动类提供了以下代码。当我进入那个活动时,我希望每秒都有一个日志输出,但什么也没发生 private void setupAlarm() { AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this,AdhIntent.clas

我在
onCreate
中为我的一个
活动
类提供了以下代码。当我进入那个活动时,我希望每秒都有一个日志输出,但什么也没发生

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");

    }

}

首先,
AdhIntent
需要是一个
public
类。否则,Android无法创建它的实例

其次,
需要在
元素的清单中注册。否则,Android将无法通过您的
pendingent
向其发送广播

您也不需要
getApplicationContext()
——只在您完全准确地知道使用它的原因时使用它


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

谢谢!文档中没有明确说明该类应该是公共的。清单中的注册与文档中的注册略有不同。关于getApplicationContext(),我是否应该将其更改为getApplication()?@hajder:直接删除它,然后调用
getSystemService()
。我应该将哪个作为参数传入@hajder:
报警服务
,就像现在一样。