介绍
这篇文章给大家介绍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如何进行回调