CursorLoader也是AsyncTaskLoader的子类,主要负责数据库查询的异步加载,AsyncTaskLoader可用来所有异步加载。...2.2 CursorLoader CursorLoader是AsyncTaskLoader的子类,内部持有ForceLoadContentObserver变量,观察者来实现对数据源的数据更新,执行加载数据操作...当然你也可以用来绑定谷歌提供的CursorLoader ,在Loader创建的时候被调用,这里使用一个ContentProvider获取数据,所以使用CursorLoader返回数据 ?...和ContentResolver发出通知,接着ContentProvider通知Cursor的观察者数据发生了变化,然后Cursor通知CursorLoader的观察者数据发生了变化,CursorLoader...的自动数据刷新功能了;可以发现,所谓的CurSorLoader自动刷新也是对文章开头说的观察者模式,所以不再过多说明。
例如,CursorLoader 会自动注册 ContentObserver,以在数据变更时触发重新加载。...CursorLoader - AsyncTaskLoader 的具体子类,用于异步加载 ContentProvider 的数据。该类会查询 ContentResolver 并返回 Cursor。...@NonNull T owner) { return new LoaderManagerImpl(owner, owner.getViewModelStore());} 一个CursorLoader...(可选)一种数据源,例如一个Conterprovider(当使用CursorLoader)。 (可选)一种显示loader加载数据的方式,例如SimpleCursorAdapter。 四....;public class LoaderCreator { public static final int ALL_BOOK_FILE = 1; public static CursorLoader
我们通常会使用 CursorLoader,但也可以实现自己的子类。...但是,为了初始化加载器以及实现一个 Loader 类(如 CursorLoader),我们需要引用 LoaderManager。...在此方法中,我们可以创建加载器,通过这个方法将返回 CursorLoader,但我们也可以实现自己的 Loader 子类。...在下面的示例中,onCreateLoader() 方法创建了 CursorLoader。我们必须使用它的构造方法来构建 CursorLoader。...例如,如果数据是来自 CursorLoader 的一个游标,则我们不应手动对其调用 close()。
ListView listView; // 使用SimpleCursorAdapter来填充数据 private SimpleCursorAdapter mAdapter; // 使用CursorLoader...来获取数据 private CursorLoader loader; @Override protected void onCreate(Bundle savedInstanceState...Loader onCreateLoader(int id, Bundle args) { // 查询音乐数据库 获取音乐数据 并排序 loader = new CursorLoader
最常见的方式是与一个CursorLoader一起使用,然而应用是可以随便写它们自己的装载器以加载其它类型的数据。每个activity或fragment只有一个LoaderManager。...你可以使用典型的CursorLoader,但是你也可以实现你自己的子类。一旦装载器被激活,它们将监视它们的数据源并且在数据改变时发送新的结果。...CursorLoader AsyncTaskLoader的子类,它查询ContentResolver然后返回一个Cursor。... 装载器,一般指的是CursorLoader,我们希望在它停止后依然保持数据.这使得应用可以在activity或fragment的 onStop() 和onStart() 之间保持数据,所以当用户回到一个应用时...= '' ))"; return new CursorLoader(getActivity(), baseUri, CONTACTS_SUMMARY_PROJECTION
android.app.LoaderManager; import android.app.LoaderManager.LoaderCallbacks; import android.content.CursorLoader...content://com.example.loadermanagertest2." + "PersonContentProvider/person"); CursorLoader...loader = new CursorLoader(getActivity(), uri, null, null, null, null); return
例如,CursorLoader 会自动注册 ContentObserver,以在数据变更时触发重新加载。...CursorLoader - AsyncTaskLoader 的具体子类,用于异步加载 ContentProvider 的数据。该类会查询 ContentResolver 并返回 Cursor。...@NonNull T owner) { return new LoaderManagerImpl(owner, owner.getViewModelStore()); } 一个CursorLoader...(可选)一种数据源,例如一个Conterprovider(当使用CursorLoader)。 (可选)一种显示loader加载数据的方式,例如SimpleCursorAdapter。 四....; public class LoaderCreator { public static final int ALL_BOOK_FILE = 1; public static CursorLoader
常用的有CursorLoader, 用来加载数据库数据。 // Prepare the loader....mCurFilter)); } else { baseUri = Contacts.CONTENT_URI; } // Now create and return a CursorLoader...= '' ))"; return new CursorLoader(getActivity(), baseUri, CONTACTS_SUMMARY_PROJECTION
常用的有CursorLoader, 用来加载数据库数据. // Prepare the loader....mCurFilter)); } else { baseUri = Contacts.CONTENT_URI; } // Now create and return a CursorLoader...= '' ))"; return new CursorLoader(getActivity(), baseUri, CONTACTS_SUMMARY_PROJECTION
Loader ,特别是 CursorLoader,的常见用法是观察数据库的内容并保持数据与 UI 同步。...使用 CursorLoader 后,如果数据库其中的一个值发生改变,Loader 就会自动触发数据重新加载并且更新 UI。 ?...你可以使用 Room 来代替 CursorLoader 的功能。 创建仓库类来支持一个可伸缩的加载、缓存和同步数据的架构。 想要更多 ViewModel 相关的干货?
Loader ,特别是 CursorLoader,的常见用法是观察数据库的内容并保持数据与 UI 同步。...使用 CursorLoader 后,如果数据库其中的一个值发生改变,Loader 就会自动触发数据重新加载并且更新 UI。...你可以使用 Room 来代替 CursorLoader 的功能。 创建仓库类来支持一个可伸缩的加载、缓存和同步数据的架构。 想要更多 ViewModel 相关的干货?
The library also provides concrete implementations of this class, including CursorLoader and AsyncTaskLoader
As an alternative, use LoaderManager with a CursorLoader. Constructor the enables auto-requery....作为替代,可以使用LoaderManager用CursorLoader 这里说应用程序的UI线程可能会导致异常,应该是当数据量过大的时候,查询时间需要很久,超过6秒,那么就会出现anr异常把,我猜是这种
.) // Consider using CursorLoader to perform the query.
建议三:怎么在线程中初始化查询操作 当查询操作正在后台处理时,展示数据也不是即时的,但是你可以使用CursorLoader对象来加快速度,这个操作可以使Activity和用户之间的互动不受影响。
AlbumsLoader public class AlbumLoader extends CursorLoader { // content://media/external/file...context, QUERY_URI, PROJECTION, selection, selectionArgs, BUCKET_ORDER_BY); } public static CursorLoader
也可以看看 CursorLoader 这个类的源码,看 Google 自己是怎么使用 getContentResolver().query 的。
Bundle args) { toggleShowLoading(true,getString(R.string.common_loading)); CursorLoader...cursorLoader = new CursorLoader(ImageSelectActivity.this, MediaStore.Images.Media.EXTERNAL_CONTENT_URI...new String[]{"image/jpeg","image/png"},IMAGE_COLUMNS[2] + " DESC"); return cursorLoader
领取专属 10元无门槛券
手把手带您无忧上云