【发布时间】:2012-09-19 16:18:53
【问题描述】:
在我最近的一个 SO 问题中,有人建议我使用 Loader 作为我的解决方案。所以在这里我想了解如何实现一个简单的AsyncTaskLoader
这是我想出的:
public class Scraper extends AsyncTaskLoader<List<Event>> {
List<Event> lstEvents;
public Scraper(Context context) {
super(context);
}
public List<Event> loadInBackground() {
//This is where I will do some work and return the data
}
}
这就是我想出的全部。我阅读了AyncTaskLoader 的文档,但我从未遇到过像它这样神秘和凌乱的东西。有一百万种方法,所有这些方法都是相互对立的,看着它们,很难推断出它们被调用的顺序,甚至它们是否应该被覆盖和调用。这个任务的生命周期是一场该死的噩梦。
我正在寻找的是简单地抓取一些数据并将其返回。我还想将它存储在一个类变量中,以便下次及时返回它,而不必再次抓取所有数据。
我没有打开的游标、流或类似的东西,只有一个名为lstEvents 的简单变量(可能很大)。我不想泄漏内存和浪费资源,所以如果有人能解释我需要什么来关闭/取消何时何地让这个任务工作,我会很高兴。
我应该在哪里将数据存储到类变量中?我应该在 loadInBackground 方法的末尾执行此操作,还是应该在 deliverResult 方法中执行此操作?
在这个简单的场景中,我是否真的需要检查任务是否被取消或是否被重置,或者我是否应该不重写这些方法并让AsyncTaskLoader 处理它。
如果有人知道,一些脚手架代码会很有帮助。非常感谢。
【问题讨论】:
标签: java android android-asynctask android-loader