使用 AlarmManager 从 BroadcastReceiver 启动服务
Start Service from BroadcastReceiver with AlarmManager
我想在 BroadcastReceiver 中启动多个警报并从该警报启动服务但没有启动 运行。我刚刚使用 context.startService(intent) 对其进行了测试,并且成功了。但是不知何故,如果我使用 alarmManager 服务没有启动。
这是我的代码:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
String weekDay;
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);
Calendar calendars = Calendar.getInstance();
weekDay = dayFormat.format(calendars.getTime());
//Toast.makeText(contexts,"Day : " + weekDay,Toast.LENGTH_SHORT).show();
for (int i=1; i< jArray; i++)
{
String hari = hari_list.get(i);
if (weekDay.equals(hari))
{
Intent intent = new Intent(contexts, Service3.class);
pendingIntent = PendingIntent.getBroadcast(contexts, i, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager manager = (AlarmManager) contexts.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,8);
calendar.set(Calendar.MINUTE, 16);
calendar.set(Calendar.SECOND, 00);
manager.setExact(manager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
}
}
你能帮我吗?
您只能使用 alarmmanager 呼叫接收器。
尝试调用接收器并从该接收器启动服务
目前您正在发送配置为服务 Intent 的 Broadcast Intent。
Intent intent = new Intent(contexts, Service3.class);
pendingIntent = PendingIntent.getBroadcast(contexts, i, intent, PendingIntent.FLAG_ONE_SHOT);
尝试getService 而不是getBroadcast 直接在警报管理器中启动服务。
如果您想使用广播,您需要发送正确的广播意图并在您的清单中注册该广播的侦听器。
我想在 BroadcastReceiver 中启动多个警报并从该警报启动服务但没有启动 运行。我刚刚使用 context.startService(intent) 对其进行了测试,并且成功了。但是不知何故,如果我使用 alarmManager 服务没有启动。
这是我的代码:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
String weekDay;
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);
Calendar calendars = Calendar.getInstance();
weekDay = dayFormat.format(calendars.getTime());
//Toast.makeText(contexts,"Day : " + weekDay,Toast.LENGTH_SHORT).show();
for (int i=1; i< jArray; i++)
{
String hari = hari_list.get(i);
if (weekDay.equals(hari))
{
Intent intent = new Intent(contexts, Service3.class);
pendingIntent = PendingIntent.getBroadcast(contexts, i, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager manager = (AlarmManager) contexts.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,8);
calendar.set(Calendar.MINUTE, 16);
calendar.set(Calendar.SECOND, 00);
manager.setExact(manager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
}
}
你能帮我吗?
您只能使用 alarmmanager 呼叫接收器。
尝试调用接收器并从该接收器启动服务
目前您正在发送配置为服务 Intent 的 Broadcast Intent。
Intent intent = new Intent(contexts, Service3.class);
pendingIntent = PendingIntent.getBroadcast(contexts, i, intent, PendingIntent.FLAG_ONE_SHOT);
尝试getService 而不是getBroadcast 直接在警报管理器中启动服务。
如果您想使用广播,您需要发送正确的广播意图并在您的清单中注册该广播的侦听器。