Android Open Source - blink Model Loader






From Project

Back to project page blink.

License

The source code is released under:

Apache License

If you think the Android project blink listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.nashlincoln.blink.content;
/*w  w w .j a  v a  2  s. co m*/
import android.content.AsyncTaskLoader;
import android.content.Context;
import android.util.Log;

import com.nashlincoln.blink.event.Event;

import java.util.Observable;
import java.util.Observer;

/**
 * Created by nash on 8/28/14.
 */
public abstract class ModelLoader<T> extends AsyncTaskLoader<T> {
    private static final String TAG = "ModelLoader";
    private T mData;

    public ModelLoader(Context context) {
        super(context);
    }

    public abstract T fetch();
    public abstract String getKey();

    @Override
    public T loadInBackground() {
//        Log.d(TAG, "loadInBackground");
        try {
            // check memory cache
            // check disk cache

            mData = fetch();
            Event.observe(getKey(), mObserver);
        } catch (Exception e) {
            Log.w(TAG, "exception in fetch: ", e);
        }

        return mData;
    }

    @Override public void deliverResult(T data) {
//        Log.d(TAG, "deliverResult: " + isReset() + " " + isStarted());
        if (isReset()) {
            if (data != null) {
                onReleaseResources(data);
            }
            return;
        }

        T oldData = mData;
        mData = data;

        if (isStarted()) {
            super.deliverResult(data);
        }

        if (oldData != null) {
//            onReleaseResources(oldData);
        }
    }

    /**
     * Handles a request to start the Loader.
     */
    @Override protected void onStartLoading() {
//        Log.d(TAG, "onStartLoading");
        if (mData != null) {
            deliverResult(mData);
        }

        if (takeContentChanged() || mData == null) {
            forceLoad();
        }
    }

    /**
     * Handles a request to stop the Loader.
     */
    @Override protected void onStopLoading() {
//        Log.d(TAG, "onStopLoading");
        cancelLoad();
    }

    /**
     * Handles a request to cancel a load.
     */
    @Override public void onCanceled(T stores) {
//        Log.d(TAG, "onCanceled");
        super.onCanceled(stores);

        onReleaseResources(stores);
    }

    /**
     * Handles a request to completely reset the Loader.
     */
    @Override protected void onReset() {
//        Log.d(TAG, "onReset");
        super.onReset();
        onStopLoading();

        if (mData != null) {
            onReleaseResources(mData);
            mData = null;
        }
    }

    protected void onReleaseResources(T data) {
        Event.ignore(getKey(), mObserver);
        // For a simple List<> there is nothing to do.  For something
        // like a Cursor, we would close it here.
    }

    private Observer mObserver = new Observer() {
        @Override
        public void update(Observable observable, Object data) {
            Log.d(TAG, "update");
            onContentChanged();
        }
    };
}




Java Source Code List

com.nashlincoln.blink.ApplicationTest.java
com.nashlincoln.blink.app.BlinkApp.java
com.nashlincoln.blink.app.FragmentPagerAdapter.java
com.nashlincoln.blink.app.NetworkReceiver.java
com.nashlincoln.blink.app.PreferenceUtils.java
com.nashlincoln.blink.content.Command.java
com.nashlincoln.blink.content.DeviceLoader.java
com.nashlincoln.blink.content.DeviceTypeLoader.java
com.nashlincoln.blink.content.GroupLoader.java
com.nashlincoln.blink.content.ModelLoader.java
com.nashlincoln.blink.content.SceneLoader.java
com.nashlincoln.blink.content.Syncro.java
com.nashlincoln.blink.event.Event.java
com.nashlincoln.blink.event.Status.java
com.nashlincoln.blink.event.Type.java
com.nashlincoln.blink.model.AttributeDao.java
com.nashlincoln.blink.model.AttributeTypeDao.java
com.nashlincoln.blink.model.AttributeType.java
com.nashlincoln.blink.model.Attribute.java
com.nashlincoln.blink.model.DaoMaster.java
com.nashlincoln.blink.model.DaoSession.java
com.nashlincoln.blink.model.DeviceDao.java
com.nashlincoln.blink.model.DeviceTypeDao.java
com.nashlincoln.blink.model.DeviceType.java
com.nashlincoln.blink.model.Device.java
com.nashlincoln.blink.model.GroupDao.java
com.nashlincoln.blink.model.GroupDeviceDao.java
com.nashlincoln.blink.model.GroupDevice.java
com.nashlincoln.blink.model.Group.java
com.nashlincoln.blink.model.SceneDao.java
com.nashlincoln.blink.model.SceneDeviceDao.java
com.nashlincoln.blink.model.SceneDevice.java
com.nashlincoln.blink.model.Scene.java
com.nashlincoln.blink.model.TimerDao.java
com.nashlincoln.blink.model.Timer.java
com.nashlincoln.blink.network.BlinkApiInterface.java
com.nashlincoln.blink.network.BlinkApi.java
com.nashlincoln.blink.nfc.NfcCommand.java
com.nashlincoln.blink.nfc.NfcUtils.java
com.nashlincoln.blink.ui.AddDeviceFragment.java
com.nashlincoln.blink.ui.BlinkActivity.java
com.nashlincoln.blink.ui.BlinkListFragment.java
com.nashlincoln.blink.ui.DeviceListFragment.java
com.nashlincoln.blink.ui.EditListActivity.java
com.nashlincoln.blink.ui.EditListFragment.java
com.nashlincoln.blink.ui.EditNameDialogFragment.java
com.nashlincoln.blink.ui.GroupListFragment.java
com.nashlincoln.blink.ui.SceneListFragment.java
com.nashlincoln.blink.ui.SettingsActivity.java
com.nashlincoln.blink.widget.DeviceSummary.java
com.nashlincoln.blink.widget.SlidingTabLayout.java
com.nashlincoln.blink.widget.SlidingTabStrip.java
com.nashlincoln.dao.Generator.java