Service + BroadcastReceiver对vs Loader/AsyncTaskLoader

Kat*_*lon 3 service android loader broadcastreceiver

是否存在AsyncTaskLoader比Service + BroadcastReceiver对更合适的情况?或者在这个意义上是一个多余的装载机?在游标的情况下,使用Service + ContentProvider对而不是加载器并不总是更好吗?我试图看看装载机是否对于机器人是必要的,或者它是否只是那里的东西,但它的用处最多是多余的.所以基本上,它们是否重要,在什么情况下它们最适合工作而不是任何其他对象?

Gen*_*kin 5

加载器提供缓存.使用加载器时,通常更容易使用UI(尤其是屏幕旋转),因为LoaderManager它与活动相关联,即内存泄漏没有问题.

考虑这种情况:您开始加载数据然后旋转设备.在这种情况下,将重新创建活动.你怎么用Service+ BroadcastReceiver?您将不得不要求您的服务在轮换后为您提供数据,并且它将通过广播意图发送它,假设您必须首先序列化您的数据...例如Parcelable.如果您需要一组对象,您可能必须先绑定到该服务.如果您使用了加载器,onLoadFinished则会自动调用屏幕旋转并从缓存中获取数据.我认为这比方便得多Service.

装载程序支持内容观察者.您可以创建内容观察器,监视基础数据中的任何更改并在需要时触发加载器.这也是一种非常强大的机制,可让您使数据保持最新状态.你可以在使用a时手动实现,Service但我认为在这里使用加载器更方便.

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