OSDN Git Service

9b6caba1579dfcaea9397e775efbc33a7bcb4259
[android-x86/packages-apps-Eleven.git] / src / com / cyanogenmod / eleven / loaders / WrappedAsyncTaskLoader.java
1
2 package com.cyanogenmod.eleven.loaders;
3
4 import android.content.Context;
5 import android.support.v4.content.AsyncTaskLoader;
6
7 /**
8  * <a href="http://code.google.com/p/android/issues/detail?id=14944">Issue
9  * 14944</a>
10  *
11  * @author Alexander Blom
12  */
13 public abstract class WrappedAsyncTaskLoader<D> extends AsyncTaskLoader<D> {
14
15     private D mData;
16
17     /**
18      * Constructor of <code>WrappedAsyncTaskLoader</code>
19      *
20      * @param context The {@link Context} to use.
21      */
22     public WrappedAsyncTaskLoader(Context context) {
23         super(context);
24     }
25
26     /**
27      * {@inheritDoc}
28      */
29     @Override
30     public void deliverResult(D data) {
31         if (!isReset()) {
32             this.mData = data;
33             super.deliverResult(data);
34         } else {
35             // An asynchronous query came in while the loader is stopped
36         }
37     }
38
39     /**
40      * {@inheritDoc}
41      */
42     @Override
43     protected void onStartLoading() {
44         if (this.mData != null) {
45             deliverResult(this.mData);
46         } else if (takeContentChanged() || this.mData == null) {
47             forceLoad();
48         }
49     }
50
51     /**
52      * {@inheritDoc}
53      */
54     @Override
55     protected void onStopLoading() {
56         // Attempt to cancel the current load task if possible
57         cancelLoad();
58     }
59
60     /**
61      * {@inheritDoc}
62      */
63     @Override
64     protected void onReset() {
65         super.onReset();
66         // Ensure the loader is stopped
67         onStopLoading();
68         this.mData = null;
69     }
70 }