【问题标题】:Start Service from BroadcastReceiver with AlarmManager使用 AlarmManager 从 BroadcastReceiver 启动服务
【发布时间】:2015-07-31 06:35:01
【问题描述】:

我想在 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);
                }
            }

你能帮我吗?

【问题讨论】:

    标签: android service broadcastreceiver alarmmanager


    【解决方案1】:

    目前,您正在发送一个配置为服务 Intent 的广播 Intent。

    Intent intent = new Intent(contexts, Service3.class);
    pendingIntent = PendingIntent.getBroadcast(contexts, i, intent, PendingIntent.FLAG_ONE_SHOT);
    

    尝试getService而不是getBroadcast直接在报警管理器中启动服务。

    如果您想使用广播,您需要发送正确的广播意图并在您的清单中为该广播注册一个侦听器。

    【讨论】:

    • 太棒了!只是1个字让我感到困惑。哈哈
    • 如果答案对您有帮助,请点赞并接受答案。
    【解决方案2】:

    您只能使用警报管理器呼叫接收器。

    尝试调用接收器并从该接收器启动服务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多