AlarmManager不会触发PendingIntent - Android

时间:2015-03-17 18:51:57

标签: android broadcastreceiver alarmmanager

我已经创建了一个类来设置AlarmManager并使用BroadcastReceiver接收它,但它不起作用。我尝试了不同的类型来设置de AlarmManager,但没有任何效果。当然,如果我以其他方式调用它,BroadcastRecevier工作正常。

public class AlarmBroadcastReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if(intent==null)
        {
            Log.d("INFO", "Intent is null");
        }

        if(context==null)
        {
            Log.d("INFO", "Context is null");
        }

        if(intent!=null && context!=null)
        {
            Log.d("INFO", "AlarmManager fired...");
        }
    }

    public static void startAlarm(Context context)
    {
        if(PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmBroadcastReceiver.class), PendingIntent.FLAG_NO_CREATE)==null)
        {
            Log.d("INFO", "AlarmManager set...");
            AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 10000, PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmBroadcastReceiver.class), 0));
        }
    }
}

我希望你能帮助我!谢谢:D

1 个答案:

答案 0 :(得分:2)

您使用的是RTC_WAKEUP,但您的时基表示为SystemClock.elapsedRealtime()。那些不匹配。使用ELAPSED_REALTIME_WAKEUP或更改活动的时间基于System.currentTimeMillis()或使用它的内容(例如java.util.Calendar)。

除此之外,请确认您的AlarmBroadcastReceiver已在清单中注册,并查看是否有与您的问题相关的任何LogCat消息。