Android应用中onLoadFinished与onLoaderReset如何进行回调

  介绍

这篇文章给大家介绍Android应用中onLoadFinished与onLoaderReset如何进行回调,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>,onLoadFinished与onLoaderReset回调

这个方法是在前面已创建的加载器已经完成其加载过程后被调用,这个方法保证会在应用到加载器上的数据被释放之前被调用。在此方法中,你必须删除所有对旧数据的使用(因为它将很快会被删除),但是不要自己去释放它们,因为它们的加载器会做这些事情。

加载器一旦了解到应用不再使用数据时,将马上释放这些数据,例如,如果数据是一个从CursorLoader来的游标,你不应调用游标的关闭(),如果游标被放置在一个CursorAdapter中,你应使用swapCursor()方法,以使旧的游标不被关闭,例如:

//这个适配器被用于显示列表的数据又是;   SimpleCursorAdapter  mAdapter,   ……,   ,   public  void  onLoadFinished (Loader

<>强onLoaderReset

当一个已创建的加载器被重置从而使其数据无效时,此方法被调用。此回调使你能发现什么时候数据将被释放于是你可以释放对它的引用。

下面这个实现调用参数为零的swapCursor ():

//,这个适配器被用于显示列表的数据   SimpleCursorAdapter  mAdapter;   ……,   ,   public  void  onLoaderReset (Loader

<>强例子

作为一个例子,这里完整实现了一个片段显示一个包含从联系人contentprovider返回查询数据的列表视图的内容的功能,它使用一个CursorLoader来管理对提供者的查询。

public  static  class  CursorLoaderListFragment  extends  ListFragment    ,,,implements  OnQueryTextListener,, LoaderManager.LoaderCallbacks, {,   ,//才能,这是用于显示列表数据的Adapter    mAdapter; SimpleCursorAdapter 才能;   ,//才能,如果非null,这是当前的搜索过虑器,   mCurFilter; String 才能;   ,   @Override 才能public  void  onActivityCreated (Bundle  savedInstanceState), {,   ,,,super.onActivityCreated (savedInstanceState);,   ,   ,,,//,如果列表中没有数据,就给控件一些文字去显示。在一个真正的应用,   ,,,//,中这应用资源中取得只   ,,,setEmptyText (“No  phone  numbers"),,   ,   ,,,//,我们在动作栏中有一个菜单项只   ,,,setHasOptionsMenu(真正的),,   ,   ,,,//,创建一个空的适配器,我们将用它显示加载后的数据,   ,,,mAdapter =, new  SimpleCursorAdapter (getActivity (),,   ,,,,,,,,,android.R.layout.simple_list_item_2 null,,   ,,,,,,,new  String [], {Contacts.DISPLAY_NAME的不同之处是,Contacts.CONTACT_STATUS },,   ,,,,,,,new  int [], {android.R.id.text1的不同之处是,android.R.id.text2 },, 0),,   ,,,setListAdapter (mAdapter);,   ,   ,,,//,准备加载程序。可能是重连到一个已存在的或开始一个新的,   ,,,getLoaderManager () .initLoader(0,,空,,),,   ,,},   ,   @Override 才能public  void  onCreateOptionsMenu (Menu 菜单,MenuInflater 增压泵),{,   ,,,//,放置一个动作栏项用于搜索又是;   ,,,MenuItem  item =, menu.add (“Search");,   ,,,item.setIcon (android.R.drawable.ic_menu_search);,   ,,,item.setShowAsAction (MenuItem.SHOW_AS_ACTION_IF_ROOM);,   ,,,SearchView  sv =, new  SearchView (getActivity ()),,   ,,,sv.setOnQueryTextListener(这个),,   ,,,item.setActionView (sv),,   ,,},   ,   public 才能;boolean  onQueryTextChange (String  newText), {,   ,,,//,在动作栏上的搜索字串改变时被调用。更新,   ,,,//搜索过滤器,并重启加载程序来执行一个新的查询,   ,,,mCurFilter =, ! TextUtils.isEmpty (newText), ?, newText :,零,,   ,,,getLoaderManager () .restartLoader(0,,空,,),,   ,,,return ,真的,,   ,,},   ,   @Override 才能public  boolean  onQueryTextSubmit (String 查询),{,   ,,,//,我们不关心这个方法,   ,,,return ,真的,,   ,,},   ,   @Override 才能public  void  onListItemClick (l, ListView  View  v, int 位置,,long  id), {,   ,,,//,写入你想写的代码,   ,,,Log.i (“FragmentComplexList",,“Item 点击:,“,+,id),,   ,,},   ,//才能,这是我们想获取的联系人中一行的数据又是;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android应用中onLoadFinished与onLoaderReset如何进行回调