在IntentService类中使用binder和onHandleIntent之间的区别

时间:2013-06-09 11:02:29

标签: android android-service

根据Android APIIntentService派生类为每个接收到的意图创建一个新的工作线程,并将其传递给onHandleIntent()实现。

所以我假设(纠正我,如果我错了)我的实现应区分我想要接收的所有不同类型的意图,然后在我的服务中调用处理此请求的相应方法。这将在工作线程中完成,工作线程已在onStartCommand()方法中自动创建。

我的问题是,如果正在执行对封装我的服务的公共方法(请参阅"Extending the Binder class"部分)的绑定器的调用,那么这些方法是否也会在专用的工作人员中执行?或者它将在主应用程序的主题中完成?如果我想从主屏幕Widget调用方法,我是否需要额外的Messenger来委派这些调用?

我什么时候使用哪种方法(BinderonStartCommand())?

1 个答案:

答案 0 :(得分:4)

IntentService不是为了绑定目的而构建的。 current implementationnull方法返回onBind()

此外,当前实现处理单独的单线程上的所有请求。 (特别是在服务开始时创建)。 Intent消息只是在该线程的处理程序上排队。

如果扩展IntentService,只是向客户端提供Binder,则会在调用方法的同一线程上调用binder的方法。

如果您实现自己的IBinder扩展或使用Messenger模式,则会在您发起消息Handler的帖子上调用方法。