Android 服务+;BroadcastReceiver对vs Loader/AsyncTaskLoader

Android 服务+;BroadcastReceiver对vs Loader/AsyncTaskLoader,android,service,broadcastreceiver,loader,Android,Service,Broadcastreceiver,Loader,是否存在AsyncTaskLoader比Service+BroadcastReceiver对更合适的情况?或者从这个意义上讲,装载机是多余的?对于游标,使用Service+ContentProvider对而不是加载器不是总是更好吗?我想看看加载程序对android是否是必要的,或者它是否只是一个存在的东西,但它的用处充其量是多余的。因此,基本上,它们重要吗?在什么情况下,它们比任何其他对象更适合于该作业?加载程序提供缓存。使用加载器时,使用UI(尤其是屏幕旋转)通常更容易,因为LoaderMan

是否存在AsyncTaskLoader比Service+BroadcastReceiver对更合适的情况?或者从这个意义上讲,装载机是多余的?对于游标,使用Service+ContentProvider对而不是加载器不是总是更好吗?我想看看加载程序对android是否是必要的,或者它是否只是一个存在的东西,但它的用处充其量是多余的。因此,基本上,它们重要吗?在什么情况下,它们比任何其他对象更适合于该作业?

加载程序提供缓存。使用加载器时,使用UI(尤其是屏幕旋转)通常更容易,因为
LoaderManager
已连接到活动,即没有内存泄漏问题

考虑这种情况:开始加载数据,然后旋转设备。在这种情况下,将重新创建活动。您将如何使用
服务
+
广播接收器
?在轮换之后,您必须要求您的服务提供数据,它将通过广播意图发送数据,该意图假定您必须首先序列化数据。。e、 g.放入
包裹中
。如果您需要一组对象,您可能必须首先绑定到服务。 如果使用加载程序,在屏幕旋转后,将自动调用
onload finished
,并从缓存中获取数据。我认为这比
服务
方便得多

加载程序支持内容观察者。您可以创建内容观察者来监视基础数据中的任何更改,并在需要时触发加载程序。这也是一种非常强大的机制,允许您保持数据的最新状态。您可以在使用
服务时手动实现这一点,但我仍然认为在这里使用Loader更方便


要回答您的问题,不需要加载程序,您可以随时用其他解决方案替换它们。但它们非常方便加载数据,因为它们的生命周期与UI组件相关联,并且它们提供了一些现成的有用API。

感谢您的回复+1。我看你完全没有参与辩论。为什么?
ContentProvider
s是围绕数据库的包装器,您可以将其与加载程序一起使用,也可以不使用加载程序。。默认情况下,它们在后台线程上工作,因此您需要实现线程。加载程序解决了查询的线程问题,但对于插入更新和删除,您仍然需要自己的线程,例如
AsyncQueryHandler
。我更喜欢同时使用
加载程序
ContentProvider
,因为它们能很好地协同工作。对不起,我把你弄糊涂了,当然我的意思是
ContentProvider
默认在UI线程上工作,这就是为什么你需要实现线程。否则就没有意义了:)对不起。