【问题标题】:Start service for every few seconds每隔几秒启动一次服务
【发布时间】:2014-02-24 13:00:03
【问题描述】:

我想在wifi网络连接时启动服务。

如果我在 wifi 连接时启动服务,使用

context.startService(intent_alarm);

效果很好。

我想在收到广播后每 10 秒启动一次服务。所以我使用了 AlarmManager

代码如下:

public class NetworkChangeReceiver extends BroadcastReceiver{
        public static AlarmManager am;
        public static PendingIntent sender;
      @Override
         public void onReceive(final Context context, final Intent intent) {
                 Intent intent_alarm = new Intent(context, MyService.class);
                    sender = PendingIntent.getBroadcast(context, 0, intent_alarm, 0);
                    am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
                    long l = System.currentTimeMillis();
                    l += 3600L;
                    am.setRepeating(AlarmManager.RTC_WAKEUP,l, 3600L, sender);
                    //context.startService(intent_alarm);
    }
    }

我想在这里我给了 3.6 秒作为间隔。

但是服务没有运行,我手动检查了。 请告诉我我做错了什么?

【问题讨论】:

  • 您是否在清单文件中正确声明了您的接收方
  • 是的。如果我使用 startService 启动它,它工作正常。我想每 10 秒启动一次服务。
  • 这会很快耗尽设备的电池电量。
  • @VigneshBala 尝试 greg 代码,让我知道问题所在

标签: android android-service alarmmanager android-pendingintent


【解决方案1】:

您需要告诉警报管理器启动您的服务:

Intent intent_alarm = new Intent(context, MyService.class);
sender = PendingIntent.getService(context, 0, intent_alarm, 0);

【讨论】:

  • 不,这发生在我们所有人身上。如果解决了,请标记为帮助他人的答案。
  • @GregEnnis 我使用 getService 然后它没有启动我的服务但是当我使用 getBroadcast 时它启动了服务
【解决方案2】:

你已经使用了 PendingIntent.getBroadcast instread of PendingIntent.getService 所以用这个->

Intent intent_alarm = new Intent(context, MyService.class);
sender = PendingIntent.getService(context, 0, intent_alarm, 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2017-06-20
    • 2011-03-26
    • 2019-11-25
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    相关资源
    最近更新 更多