为什么SyncService下面 Google 提供的示例使用 aService而不是 a IntentService?我的理解是IntentServices在后台运行,而常规Service将在主线程中运行。对于没有 UI 只更新数据的东西,你为什么希望它在主线程中运行?这不会有掉帧的风险吗?
有可能有独立的IntentService吗?还是需要基于在主线程上运行的东西?这是我能明白为什么我们会在上面使用常规的唯一原因Service。
为什么SyncService下面 Google 提供的示例使用 aService而不是 a IntentService?我的理解是IntentServices在后台运行,而常规Service将在主线程中运行。对于没有 UI 只更新数据的东西,你为什么希望它在主线程中运行?这不会有掉帧的风险吗?
有可能有独立的IntentService吗?还是需要基于在主线程上运行的东西?这是我能明白为什么我们会在上面使用常规的唯一原因Service。
据我了解,IntentServices 在后台运行,而常规服务将在主线程中运行。
对象不在线程上运行。方法可以。
IntentService继承自Service。上的主要生命周期方法Service,特别onStartCommand()是在主应用程序线程上调用。IntentService碰巧提供了一个后台线程,它用于调用您的onHandleIntent()方法,由对onStartCommand().
对于没有 UI 只更新数据的东西,你为什么希望它在主线程中运行?
你没有。
为什么下面 Google 提供的 SyncService 示例使用的是 Service 而不是 IntentService?
因为 anIntentService在这里不合适。引用您链接到的文档:
为此,您需要创建一个绑定服务,该服务将一个特殊的 Android 绑定器对象从同步适配器组件传递到框架。使用此绑定器对象,框架可以调用 onPerformSync() 方法并将数据传递给它。
IntentService和绑定模式不能很好地协同工作。
从线程的角度来看,在Android 提供onPerformSync()的后台线程上调用。因此,即使IntentService没有根据绑定排除,您也不需要另一个后台线程,因为onPerformSync()已经在后台线程上调用了。