AlarmManager 不触发 PendingIntent - Android
AlarmManager does not fire PendingIntent - Android
我做了一个 class 来设置一个 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
您正在使用 RTC_WAKEUP
,但您的时基表示为 SystemClock.elapsedRealtime()
。那些不匹配。使用 ELAPSED_REALTIME_WAKEUP
或更改事件的时间,使其基于 System.currentTimeMillis()
或使用它的事物(例如 java.util.Calendar
)。
除此之外,确认您的 AlarmBroadcastReceiver
已在清单中注册,并查看是否有任何 LogCat 消息与您的问题相关。
我做了一个 class 来设置一个 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
您正在使用 RTC_WAKEUP
,但您的时基表示为 SystemClock.elapsedRealtime()
。那些不匹配。使用 ELAPSED_REALTIME_WAKEUP
或更改事件的时间,使其基于 System.currentTimeMillis()
或使用它的事物(例如 java.util.Calendar
)。
除此之外,确认您的 AlarmBroadcastReceiver
已在清单中注册,并查看是否有任何 LogCat 消息与您的问题相关。