我正在实现一些代码,我想定期运行它(一段时间后自动刷新......)我决定选择报警管理器,现在因为我知道我们可以使用挂起的意图来调用另一个应用程序代表我们的应用程序做一些工作。在使用报警管理器时,我启动了一项服务,如..
intent = new Intent(AutoUpdateActivity.this, AlarmService.class);
pI = PendingIntent.getService(AutoUpdateActivity.this,0, intent, 0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,10*1000,pI);
到目前为止一切都很好,我的服务每隔10秒运行一次。现在当我关闭我的应用程序时,我希望取消alarmManager,我就这样做了
pI.cancel();
这也工作正常,我的服务不再运行..
但是当我去设置并检查运行服务时,它仍然显示我正在运行服务。我哪里出错了?有什么我误导的吗?
对于我的简单解决方案,我会停止我的服务
pI.cancel();
stopService(intent);
这取消了pI以及停止服务,但我不确定这是否正确。 亲切地分享你的知识,让我知道我哪里出错了。
答案 0 :(得分:2)
执行此操作的最佳方法是在服务完成其工作后在服务中调用stopSelf()
。这将在不需要时有效地关闭服务。
当服务完成后立即关闭服务意味着当你不想或不期望它们时,你不太可能让第三方TaskKiller应用程序解决问题。
答案 1 :(得分:0)
也许您也可以尝试取消预定任务:
alarmManager.cancel(pI);