该文章来自我自己的新博客:AsyncTaskLoader解析

AsyncTaskLoader

 ↳ android.support.v4.content.Loader      ↳ android.support.v4.content.AsyncTaskLoader

基本用法

创建一个继承于AsyncTaskLoader的自定义Loder类

cancelLoadInBackground

实现以下三个常用方法和一个默认构造函数:

public SycnTasker(@NonNull Context context) {}@Overrideprotected void onStartLoading() {}@Nullable@Overridepublic Integer loadInBackground() {}@Overrideprotected boolean onCancelLoad() {}

其中默认构造函数loadInBackground必不可少

  • onStartLoading
  • 在执行完方法onCreateLoader返回一个自定义Loader对象后开始执行

  • loadInBackground
  • 当在onStartLoading中调用forceLoad()时开始执行

  • onCancelLoad
  • 当调用cancleLoad方法时会执行

    实现android.support.v4.app.LoaderManager.LoaderCallbacks接口

    @Overridepublic void onLoadFinished(Loader loader, D d) {}@Overridepublic Loader onCreateLoader(int i, Bundle bundle) {}@Overridepublic void onLoaderReset(Loader loader) {}

  • onCreateLoader
  • 当调用以下代码后开始执行

    getLoaderManager().initLoader(int id,Bundle bundle,LoaderCallbacks loaderCallbacks);

  • onLoadFinished
  • 执行完成loadInBackground后,数据可从onLoadFinished参数d中获得

  • onLoaderReset
  • 自定义Loader销毁后

    各方法执行顺序:

    onCreateLoader
    onStartLoading
    loadInBackground

    示例代码

    实现LoaderCallbacks接口所在类:

    import android.app.LoaderManager;import android.content.Loader;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.util.Log;import io.githubs.grooters.luffy.R;public class LoaderActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Integer>{    private static final String TAG= LoaderActivity.class.getSimpleName();    private AsyncTasker asyncTasker;    @Override    protected void onCreate(@Nullable final Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_loader);        getLoaderManager().initLoader(1,savedInstanceState,this);    @Override    public void onLoadFinished(Loader loader, Integer i) {        Log.i(TAG,"onLoadFinished:"+i);    }    @Override    public Loader onCreateLoader(int i, Bundle bundle) {        Log.i(TAG,"onCreateLoader");        CustomLoader customLoader=new CustomLoader(this);        customLoader.getInfo("LoaderActivity");        return customLoader;    }    @Override    public void onLoaderReset(Loader loader) {        Log.i(TAG,"onLoaderReset");    }}

    自定义Loader:

    import android.content.AsyncTaskLoader;import android.content.Context;import android.content.Intent;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.util.Log;import luffy_intent.Intenter;public class CustomLoader extends AsyncTaskLoader<Integer> {    private static final String TAG=CustomLoader.class.getSimpleName();    public CustomLoader(@NonNull Context context) {        super(context);        Log.i(TAG,"CustomLoader");    }    @Override    protected void onStartLoading() {        super.onStartLoading();        Log.i(TAG,"onStartLoading");        forceLoad();    }    @Nullable    @Override    public Integer loadInBackground() {        Log.i(TAG,"loadInBackground");        int i=0;        while(i<10){            try {                Thread.sleep(1000);                ++i;                Log.i(TAG,"i: "+i);            } catch (InterruptedException e) {                e.printStackTrace();            }            Log.i(TAG,"Finish");        }        return i;    }    @Override    protected boolean onCancelLoad() {        Log.i(TAG,"onCancelLoad");        return super.onCancelLoad();    }    public void getInfo(String str){        Log.i(TAG,"getInfo:"+str);    }}

    更多相关文章

    1. Android中常用方法的归纳集合总结(二)
    2. Android(安卓)一键锁屏实现
    3. Android两级嵌套ListView滑动问题的解决
    4. S5PV210 Android(安卓)分支代码学习
    5. android中设置AlertDialog的大小
    6. Android中BLE连接出现“BluetoothGatt status 133”的解决方法
    7. Android(安卓)---js与java的相互调用
    8. Android中Fragment中启动一个Activity,实例化控件。
    9. Android(安卓)管理Fragments

    随机推荐

    1. Android(安卓)动画旋转效果
    2. Android复制手机号码到剪切板并调起打电
    3. 刚学会百度地图最新版的sdk,总结一个简单
    4. 最新Android(安卓)ADT, SDK, SDK_tool等
    5. 最新Android(安卓)ADT, SDK, SDK_tool等
    6. Android的JNI实现基础
    7. android studio :com.android.support:app
    8. android布局属性大全
    9. Ubuntu 11.04 下搭建Android(安卓)NDK开
    10. 最新Android(安卓)ADT, SDK, SDK_tool等