AsyncTask的替代方案
2017-10-19 23:55
225 查看
在使用AsyncTask加载数据时,如果遇到设备配置改变,比如设备旋转,你得负责管理它的生命周期,同时还要保存好数据,不让其因旋转丢失。虽然调用Fragment的setRetainInstance(true)方法来保存数据可以解决问题,但它不是万能的。很多时候,你还得编写特殊场景应对代码,让应用无懈可击。这些特殊场景有:用户在AsyncTask运行时点击后退键,以及启动AsyncTask的fragment因内存紧张而被销毁。
使用Loader是一种可行的解决方案,它可以代劳很多棘手的事情。Loader用来从某些数据源加载数据对象,数据源可以是磁盘、数据库、ContentProvider、网络甚至是另一进程。
AsyncTaskLoader是个抽象Loader,它可以使用AsyncTask把数据加载工作转移到其他线程上。我们创建的loader类几乎都是AsyncTaskLoader的子类。AsyncTaskLoader能在不阻塞主线程的前提下获取到数据,并把结果发送给目标对象。
下面就来看看它的具体用法吧。
使用Loader是一种可行的解决方案,它可以代劳很多棘手的事情。Loader用来从某些数据源加载数据对象,数据源可以是磁盘、数据库、ContentProvider、网络甚至是另一进程。
AsyncTaskLoader是个抽象Loader,它可以使用AsyncTask把数据加载工作转移到其他线程上。我们创建的loader类几乎都是AsyncTaskLoader的子类。AsyncTaskLoader能在不阻塞主线程的前提下获取到数据,并把结果发送给目标对象。
下面就来看看它的具体用法吧。
相关文章推荐
- iOS5:[UIDevice uniqueIdentifier]的替代方案
- ELK 性能(1) — Logstash 性能及其替代方案
- boost::timer 的替代方案
- Android之使用枚举利弊及替代方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Base:一种 Acid 的替代方案
- OpenSessionInViewFilter 的配置及替代方案
- FWD=>Base: 一种Acid的替代方案
- OpenSessionInViewFilter 的配置及替代方案
- MySQL递归的替代方案
- Oracle存储过程中使用临时表的替代方案
- 【Android】Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Effective C++ 条款35:为虚函数寻求替代方案
- 没有mysql支持时的替代方案
- 替代方案:“双赢”式拒绝
- spring boot1.5以上版本@ConfigurationProperties取消location注解后的替代方案
- Reflector的替代方案
- 微服务–分布式事务的实现方法及替代方案
- Date.toLocaleString()方法废弃后的替代方案
- 分布式计算中WebService的替代方案: RPC (XML-RPC | JSON-RPC)