1

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

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

我的问题是,如果正在执行对仅封装了我的服务的公共方法(请参阅“扩展 Binder 类”部分)的活页夹的调用,这些方法是否也会在专用工作线程中执行?还是会在主应用程序的线程中完成?如果我想从主屏幕小部件调用方法,是否需要额外的方法Messenger来委派这些调用?

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

4

1 回答 1

4

IntentService不是为绑定目的而构建的。当前实现null从其onBind()方法返回。

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

如果您扩展IntentService,并简单地Binder向客户端提供 a,则 binder 的方法将在调用方法的同一线程上调用。

如果您实现自己的扩展IBinder或使用Messenger模式,方法将在您启动消息的线程上调用Handler

于 2013-06-09T11:14:05.707 回答