2

IntentService 是如何自动停止的,而普通的 Service 需要调用 stopService() 来停止它?这在内部如何运作?

4

2 回答 2

1

当队列中没有要处理的工作(意图)时,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只有一个工作线程顺序处理intent,所以这个测试和测试“队列是否为空”是一样的。

于 2013-03-21T09:29:59.583 回答
-2

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

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

在服务类中了解更多信息,请参阅

于 2013-03-21T09:52:27.463 回答