【问题标题】:Android : restart the serviceAndroid:重启服务
【发布时间】:2011-09-15 17:41:22
【问题描述】:

我的应用程序有一个服务,它每 X 分钟对数据库执行相同的操作,而不是它 stopSelf() 并进入 onDestroy 方法我已经放置了这段代码以在同一时间后重新启动服务:

@Override
public void onDestroy() {
    super.onDestroy();
    Intent intent_service = new Intent(context,vampireService.class);
    PendingIntent pintent = PendingIntent.getService(context, 0, intent_service,0);
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarm.set(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime()+ 4500000, pintent);
}

但我不明白为什么如果我的手机进入睡眠模式,服务不会重新启动!似乎当我为显示器加电时,AlarmManager 的计数时间会开始......这可能吗?如果是,我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: android service alarmmanager


    【解决方案1】:

    来自ELAPSED_REALTIME的文档...

    此闹钟不会唤醒设备;如果它在设备睡眠时熄灭,则直到设备下次唤醒时才会发送。

    尝试使用ELAPSED_REALTIME_WAKEUP 看看是否有帮助(但不确定它是否适用于服务)。

    【讨论】:

    • 不不工作...但是比如何在 XXX 时间后停止和重新启动服务??
    • @Mimmo:此答案中提供的解决方案应该可以正常工作。但是,使用 getService() PendingIntent_WAKEUP 警报不会获得可靠的结果。此外,您的服务在运行时需要维护WakeLock,否则设备将重新进入睡眠状态。您可以考虑使用我的WakefulIntentService,因为它具有使用_WAKEUP 警报和在工作进行时保持设备唤醒的正确模式。
    • 但是有可能手机休眠时某项服务无法重启?
    【解决方案2】:

    您可以(并且应该)使用警报管理器安排您的服务每 X 次运行一次。你有 setRepeating 这个选项。

    【讨论】:

      猜你喜欢
      • 2018-03-15
      • 2014-01-21
      • 2016-12-05
      • 2015-06-08
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多