【问题标题】:AlarmManager does not fire PendingIntent - AndroidAlarmManager 不会触发 PendingIntent - Android
【发布时间】:2015-03-18 02:54:08
【问题描述】:

我创建了一个类来设置 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

【问题讨论】:

    标签: android broadcastreceiver alarmmanager


    【解决方案1】:

    您正在使用RTC_WAKEUP,但您的时基表示为SystemClock.elapsedRealtime()。那些不匹配。要么使用ELAPSED_REALTIME_WAKEUP,要么根据System.currentTimeMillis() 或使用它的事物(例如java.util.Calendar)更改活动时间。

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

    【讨论】:

    • 感谢它在将 SystemClock.elapsedRealtime() 更改为 System.currentTimeMillis() 后起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多