Android 如何使用服务?
我正在实现一些代码,我想定期运行它(一段时间后自动刷新…)我决定使用alarm manager,现在我知道我们可以使用pending intent调用其他应用程序来代表我们的应用程序执行一些工作。在这里,我使用alarm manager启动一项服务,如Android 如何使用服务?,android,Android,我正在实现一些代码,我想定期运行它(一段时间后自动刷新…)我决定使用alarm manager,现在我知道我们可以使用pending intent调用其他应用程序来代表我们的应用程序执行一些工作。在这里,我使用alarm manager启动一项服务,如 intent = new Intent(AutoUpdateActivity.this, AlarmService.class); pI = PendingIntent.getService(AutoUpdateActivity.this,0,
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.cancel();
pI.cancel();
stopService(intent);
这是取消pI以及停止服务,但我不确定这是正确的方式。
因此,请分享您的知识,让我知道我的错误所在。最好的方法是在您的服务完成工作后,在服务内部调用
stopSelf()
。这将在不需要服务时有效地关闭服务
服务完成后立即关闭意味着您不太可能让第三方TaskKiller应用程序在您不想或不期望它们的情况下停止工作。也许您也可以尝试通过以下方式取消计划的任务:
alarmManager.cancel(pI);
嗨,rciovati,我试过这个,但它并没有停止服务,行为与pI.cancel()相同;Hi mark我无法使用这个stopSelf()方法(我在服务类中看不到这个方法)。它应该在您的服务中可用,并且从API级别1开始就存在了:非常好用thnx…..但是在这种情况下,每次创建新服务并在完成工作后销毁它时(因为我想在重复时间内运行我的服务,所以每次只能创建一个服务并调用它的启动方法)。但是,如果我想关闭(在任何情况下销毁)我启动的服务,我该怎么办?或者,在电话中一直活在我的服务中会有很大的不同(从电池角度来看,我认为是的)所以我永远不会破坏我的服务