【发布时间】:2013-06-09 19:19:42
【问题描述】:
根据 Android API,IntentService 派生类会为每个接收到的意图创建一个新的工作线程,并将其传递给 onHandleIntent() 实现。
所以我假设(如果我错了,请纠正我)我的实现应该区分我想要接收的所有不同类型的意图,然后在我的服务中调用相应的方法来处理这个请求。这一切都将在工作线程中完成,该工作线程已在 onStartCommand() 方法中自动创建。
我的问题是,如果正在执行对仅封装了我的服务的公共方法(请参阅"Extending the Binder class" 部分)的活页夹的调用,这些方法是否也会在专用工作线程中执行?还是会在主应用程序的线程中完成?如果我想从主屏幕小部件调用方法,是否需要额外的 Messenger 来委派这些调用?
我什么时候使用哪种方法(Binder 和onStartCommand())?
【问题讨论】:
-
“一个 IntentService 派生类为每个接收到的意图创建一个新的工作线程,并将其传递给 onHandleIntent() 实现”——不,只有一个线程用于后台工作。它是一个独立于主应用程序线程的线程,但它不是每个命令一个。