1

为什么SyncService下面 Google 提供的示例使用 aService而不是 a IntentService?我的理解是IntentServices在后台运行,而常规Service将在主线程中运行。对于没有 UI 只更新数据的东西,你为什么希望它在主线程中运行?这不会有掉帧的风险吗?

http://developer.android.com/training/sync-adapters/creating-sync-adapter.html#CreateSyncAdapterService

有可能有独立的IntentService吗?还是需要基于在主线程上运行的东西?这是我能明白为什么我们会在上面使用常规的唯一原因Service

4

1 回答 1

3

据我了解,IntentServices 在后台运行,而常规服务将在主线程中运行。

对象不在线程上运行。方法可以。

IntentService继承自Service。上的主要生命周期方法Service,特别onStartCommand()是在主应用程序线程上调用。IntentService碰巧提供了一个后台线程,它用于调用您的onHandleIntent()方法,由对onStartCommand().

对于没有 UI 只更新数据的东西,你为什么希望它在主线程中运行?

你没有。

为什么下面 Google 提供的 SyncService 示例使用的是 Service 而不是 IntentService?

因为 anIntentService在这里不合适。引用您链接到的文档:

为此,您需要创建一个绑定服务,该服务将一个特殊的 Android 绑定器对象从同步适配器组件传递到框架。使用此绑定器对象,框架可以调用 onPerformSync() 方法并将数据传递给它。

IntentService和绑定模式不能很好地协同工作。

从线程的角度来看,在Android 提供onPerformSync()的后台线程上调用。因此,即使IntentService没有根据绑定排除,您也不需要另一个后台线程,因为onPerformSync()已经在后台线程上调用了。

于 2014-11-17T15:28:23.953 回答