私の最近のSOの質問の1つで、誰かが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
処理させないでください。
誰かが知っていれば、いくつかの足場コードが役立ちます。ありがとうございます。