为什么以下Google提供的SyncService
示例使用的是Service
而不是IntentService
?我的理解是IntentServices
在后台运行,而常规Service
将在主线程中运行。对于没有只更新数据的UI的东西,你为什么要在主线程中运行呢?这不是风险框架下降吗?
是否可以拥有独立的IntentService
?还是需要基于在主线程上运行的东西?这是我能够理解为什么我们会使用上面的常规Service
的唯一原因。
答案 0 :(得分:3)
据我所知,IntentServices在后台运行,而常规服务将在主线程中运行。
对象不在线程上运行。做法。
IntentService
继承自Service
。 Service
上的主要生命周期方法,特别是onStartCommand()
在主应用程序线程上调用。 IntentService
碰巧提供了一个后台线程,用来调用onHandleIntent()
方法,通过调用onStartCommand()
触发。
对于没有只更新数据的UI的东西,你为什么要在主线程中运行?
你没有。
为什么以下Google提供的SyncService示例使用服务而不是IntentService?
因为此处IntentService
不合适。引用您链接到的文档:
为此,您需要创建一个绑定服务,该服务将特殊的Android绑定器对象从同步适配器组件传递到框架。使用此绑定器对象,框架可以调用onPerformSync()方法并将数据传递给它。
IntentService
并且绑定模式不能很好地协同工作。
从线程角度来看,由Android提供的onPerformSync()
is called on a background thread。因此,即使基于绑定未排除IntentService
,您也不需要另一个后台线程,因为onPerformSync()
已在后台线程上调用。