我已经创建了一个类来设置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
答案 0 :(得分:2)
您使用的是RTC_WAKEUP
,但您的时基表示为SystemClock.elapsedRealtime()
。那些不匹配。使用ELAPSED_REALTIME_WAKEUP
或更改活动的时间基于System.currentTimeMillis()
或使用它的内容(例如java.util.Calendar
)。
除此之外,请确认您的AlarmBroadcastReceiver
已在清单中注册,并查看是否有与您的问题相关的任何LogCat消息。