我想知道为什么会使用绑定服务?我得到它提供了一个“富客户端接口”但是,因为它在UI线程上执行,我想有人无法在其上运行CPU / IO密集型操作,对吧?
让我澄清一下,说我有一个绑定服务StatService,它暴露了一个方法 - getStats()。该方法可以执行一些网络IO。现在,一旦服务绑定到我的Activity,我就可以直接调用getStats(),但是当服务执行网络IO调用时,整个活动会暂停。
使用绑定服务的正确方法是在服务中启动一个Thread并让它执行网络IO,而getStats()只返回一个由Thread异步填充的数据结构?
答案 0 :(得分:0)
如果您的服务在与活动相同的过程中执行,那么,是的,您必须创建工作线程来执行IO /网络任务。但是,如果您在单独的流程中移动服务,那么您将不必这样做。 分离服务有自己的优点和缺点。例如,如果您的活动崩溃,您的服务将继续有效。但是,交叉处理转移比在同一过程中直接访问更昂贵。