Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用服务?_Android - Fatal编程技术网

Android 如何使用服务?

Android 如何使用服务?,android,Android,我正在实现一些代码,我想定期运行它(一段时间后自动刷新…)我决定使用alarm manager,现在我知道我们可以使用pending intent调用其他应用程序来代表我们的应用程序执行一些工作。在这里,我使用alarm manager启动一项服务,如 intent = new Intent(AutoUpdateActivity.this, AlarmService.class); pI = PendingIntent.getService(AutoUpdateActivity.this,0,

我正在实现一些代码,我想定期运行它(一段时间后自动刷新…)我决定使用alarm manager,现在我知道我们可以使用pending intent调用其他应用程序来代表我们的应用程序执行一些工作。在这里,我使用alarm manager启动一项服务,如

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…..但是在这种情况下,每次创建新服务并在完成工作后销毁它时(因为我想在重复时间内运行我的服务,所以每次只能创建一个服务并调用它的启动方法)。但是,如果我想关闭(在任何情况下销毁)我启动的服务,我该怎么办?或者,在电话中一直活在我的服务中会有很大的不同(从电池角度来看,我认为是的)所以我永远不会破坏我的服务