簡體   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