18 Loader 总结

这里写图片描述
1. Loader 装载器 Android3.0之后出来的 它能够使Activity和Fragment 异步加载数据 变得简单(Loader里封装了AsyncTask)markdown

  1. Loader特色:

    1,对每个Activity或者Fragment有效
    2,提供异步加载数据的机制
    3,监测数据源的变化 ,并对变化返回新的结果
    4,因为配置发生改变 从新建立Loader时 他会自动连接上一个加载器游标,不会从新查询数据异步

  2. 使用:ide

    1. 初始化Loader initLoader(编号,查询条件,回调接口);
    2. 实现回调接口 实现三个方法
    3. 在三个方法里作相应的动做
      onCreateLoader(){
      //建立Loader对象 返回Loader
      }

    onLoadFinished{
    //加载数据
    }this

    onLoaderReset(){
    //清除数据
    }线程

    CursorLoader:包含了观察者rest

    通常和ContentResolver一块儿使用 加载ContentProvider暴漏出的数据
    经过 Uri设置ContentObserver,检测数据源的变化
    继承与AsyncTaskLoader<>code

    AsyncTaskLoader: 本身自定义Loaderserver

    onStartLoading{
    执行在主线程
    forceLoad();//必须执行 强制向下执行对象

    }
    loadInBackground(){
    //加载数据
    }继承

    观察者:时刻检测数据的变化

    /**

    • 自定义的观察者
    • @author sxy
      *
      */
      class MyContentObserver extends ContentObserver{

      public MyContentObserver(Handler handler) {
      super(handler);
      // TODO Auto-generated constructor stub
      }

      //当你的数据发生改变时 调用此方法
      @Override
      public void onChange(boolean selfChange) {
      // TODO Auto-generated method stub
      super.onChange(selfChange);
      //重启Loader
      getLoaderManager().restartLoader(1, null, MainActivity.this);
      }

    }

    注册观察者:

    /**
     * 注册观察者对象    给当前Uri
     * 参数1:Uri对象
     * 参数2:   若是返回true    检测到 content:sms    content:sms/address   content:sms/address/iii
     *        若是返回false    只能检测到当前的content:sms    
     *        
     * 参数3:观察者
     * 
     */
    getContentResolver().registerContentObserver(
            Uri.parse("content://sms"), true, new MyContentObserver(null));
相关文章
相关标签/搜索