是否存在异步任务加载器比服务+广播接收器对更合适的情况?或者从这个意义上说装载机是多余的?对于游标,使用service+contentprovider对而不是加载程序并不总是更好吗?我想看看载入器对android是必要的,还是它只是一个存在的东西,但其有用性充其量是多余的。所以,基本上,他们是重要的,在什么情况下,他们最适合的工作比任何其他对象?
最佳答案
加载程序提供缓存。在使用加载程序时,使用ui(尤其是屏幕旋转)通常更容易,因为LoaderManager
与活动相连接,即内存泄漏没有问题。
考虑这种情况:开始加载数据,然后旋转设备。在此情况下将重新创建活动。用Service
+BroadcastReceiver
你会怎么处理?你将不得不要求你的服务给你的数据后,轮换,它将发送它通过广播意图,这假设你将不得不序列化你的数据第一。例如进入Parcelable
。如果您需要一个对象集合,您可能必须首先绑定到服务。
如果使用加载程序,则在屏幕旋转之后,将自动调用onLoadFinished
,并从缓存中获取数据。我认为这比Service
方便得多。
加载程序支持内容观察员。您可以创建内容观察器来监视底层数据中的任何更改,并在需要时触发加载程序。这也是一种非常强大的机制,允许您保持数据的最新状态。您可以在使用Service
时手动实现这一点,但我仍然认为在这里使用加载程序更方便。
要回答您的问题,不需要加载程序,您可以用其他解决方案替换它们。但它们对于加载数据非常方便,因为它们的生命周期与ui组件绑定,并且它们提供了一些现成的有用api。