繁体   English   中英

警报管理器和BroadCastReceiver无法触发

[英]Alarm Manager and BroadCastReceiver not firing

我的Activity类之一在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无法创建它的实例。

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

您也不需要getApplicationContext() -仅在完全准确地知道使用它的原因时才使用它。

最后,使用AlarmManager获取控制权并不是使用AlarmManager的特别AlarmManager 充其量,对于书籍示例或轻量级测试而言,这很好。 如果确实需要每秒获得控制权,那么假设每秒获得控制权实际上是明智的选择,那么还有更好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM