当Service需要stopService()调用来停止它时,IntentService如何自动停止?

时间:2013-03-21 09:25:42

标签: android android-service

IntentService如何自动停止,而普通服务需要stopService()调用才能停止它?这在内部如何运作?

2 个答案:

答案 0 :(得分:1)

当队列中没有更多工作(Intents)要处理时,IntentService会调用stopSelf()。只需在像androidxref.com这样的网站上查看IntentService.java来源即可查看:

http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/app/IntentService.java

更准确(检查提供的链接上的第66行):它实际上并不测试队列,而是每次都调用stopSelf(int)。采用startid(int)作为参数的stopSelf()版本实际上检查是否还没有必须处理的服务接收到更新的启动命令。因为IntentService只有一个工作线程按顺序处理意图,所以此测试与测试“队列是否为空”相同。

答案 1 :(得分:-2)

服务是在后台运行的组件,不与用户直接交互。 Android平台提供并运行预定义的系统服务,并且每个Android应用程序都可以使用它们,并获得正确的权限。你可以用下面的方式停下来。

Boolean stop1month = context.stopService(new Intent(context,Service.class));
or 
stopSelf()  

在mor信息的服务类see