到顶部
Android API
公众的摘要

加载器管理器

延伸对象
java.lang.Object(java.lang.对象)
   ↳ android应用程序。加载器管理器

课程概述

与关联的接口活动碎片用于管理一个或多个装载机实例。此帮助应用程序结合活动或碎片生命周期;最常见的用法是与游标加载器,但是应用程序可以自由编写他们自己的加载程序,用于加载其他类型的数据。在中引入LoaderManager API时蜂巢,API的一个版本at也可通过在较旧的平台上使用碎片活动。请参阅博客帖子所有碎片了解更多详细信息。

作为一个示例,下面是碎片显示列表视图包含的结果针对联系人内容提供商的查询。它使用游标加载器管理提供者上的查询。

公共静态类CursorLoaderListFragment扩展了ListFragmon实现OnQueryTextListener、OnCloseListener,LoaderManager。加载器回调<光标>{//这是用于显示列表数据的适配器。SimpleCursorAdapter mAdapter;//用于进行筛选的SearchView。搜索视图mSearchView;//如果非空,则这是用户提供的当前筛选器。字符串mCurFilter;@覆盖公共void onActivityCreated(Bundle savedInstanceState){super.onActivityCreated(savedInstanceState);//如果没有数据,请给出一些要显示的文本。在一个真实的//应用程序这将来自资源。setEmptyText(“无电话号码”);//我们有一个菜单项要在操作栏中显示。setHasOptionsMenu(true);//创建一个空适配器,用于显示加载的数据。mAdapter=新的SimpleCursorAdapter(getActivity(),安卓。R.layout.simple_list_item_2,空,新字符串[]{Contacts.DISPLAY_NAME,Contacts.CONTACT_STATUS},new int[]{android.R.id.text1,android.R.id.text2},0);setListAdapter(mAdapter);//从进度指示器开始。setListShown(假);//准备装载机。要么与现有的重新连接,//或者开始一个新的。getLoaderManager().initLoader(0,null,this);}公共静态类MySearchView扩展了SearchView{public MySearchView(上下文上下文){super(上下文);}//当//坍塌了,所以我们会这样做。@覆盖ActionViewCollapsed()上的公共void{setQuery(“”,false);super.onActionViewCollapsed();}}@覆盖CreateOptionsMenu上的公共void(菜单菜单,菜单充气器充气器){//放置一个操作栏项进行搜索。MenuItem item=menu.add(“搜索”);item.setIcon(android.R.drawable.ic_menu_search);项目.setShowAsAction(菜单项.SHOW_AS_ACTION_IF_ROOM|菜单项。显示_AS_ACTION_COLLAPSE_ACTION_VIEW);mSearchView=新的MySearchView(getActivity());mSearchView.setOnQueryTextListener(本);mSearchView.setOnCloseListener(本);mSearchView.setIconifiedByDefault(true);item.setActionView(mSearchView);}public boolean onQueryTextChange(字符串newText){//当操作栏搜索文本更改时调用。更新//搜索筛选器,并重新启动加载程序以执行新查询//使用此过滤器。字符串newFilter=!TextUtils.isEmpty(新文本)?newText:空;//如果过滤器没有实际更改,则不要执行任何操作。//防止在恢复状态时重新启动加载程序。if(mCurFilter==null&&newFilter==null){返回true;}if(mCurFilter!=空&&mCurFiter.equals(newFilter)){返回true;}mCurFilter=新过滤器;getLoaderManager().restartLoader(0,null,this);返回true;}@覆盖onQueryTextSubmit上的公共布尔值(字符串查询){//不要在乎这个。返回true;}@覆盖公共布尔值onClose(){if(!TextUtils.isEmpty(mSearchView.getQuery())){mSearchView.setQuery(null,true);}返回true;}@覆盖ListItemClick上的公共void(ListView l,View v,int position,long id){//在此处插入所需的行为。Log.i(“FragmentComplexList”,“点击的项目:”+id);}//这些是我们将检索的“联系人”行。静态最终字符串[]CONTACTS_SUMMARY_PROJECTION=新字符串[]{联系人_身份证件,联络。显示名称,联络。联系人状态,联络。联系人姓名,联络。照片ID,联络。LOOKUP_KEY(回路_键),};公共Loader<Cursor>onCreateLoader(int id,Bundle args){//当需要创建新的Loader时,将调用此函数。这个//示例只有一个Loader,所以我们不关心ID。//首先,根据我们是否//当前筛选。尿液基尿液;if(mCurFilter!=空){baseUri=带有附加路径的Uri(Contacts.CONTENT_FILTER_Uri,尿液编码(mCurFilter));}其他{baseUri=联系人。内容_ URI;}//现在创建并返回一个CursorLoader,它将负责//为要显示的数据创建游标。字符串选择=“(”+Contacts.DISPLAY_NAME+“NOTNULL)AND(”+联系人。HAS_PHONE_NUMBER+“=1)和(”+联系人。显示名称+“!='')”;return新的CursorLoader(getActivity(),baseUri,CONTACTS_SUMMARY_PROJECTION,选择,空,联络。显示名称+“汇总本地化ASC”);}public void onLoadFinished(Loader<Cursor>Loader,Cursor数据){//交换新光标。(框架将负责关闭//返回后使用旧光标。)mAdapter.swapCursor(数据);//现在应该显示列表。if(isResumed()){setListShown(true);}其他{setListShownNoAnimation(true);}}public void onLoaderReset(Loader<Cursor>Loader){//当最后一个游标提供给onLoadFinished()时调用//以上内容即将关闭。我们需要确保我们不是//使用时间更长。mAdapter.swapCursor(空);}}

开发人员指南

有关使用加载器的更多信息,请阅读装载机开发人员指南。

总结

内部类
接口 LoaderManager。加载器回调<D> 客户端与管理器交互的回调接口。 
公共建筑商
加载器管理器()
公共方法
摘要无效 驱逐装载机(int id)
停止并删除具有给定ID的加载程序。
摘要无效 倾倒(字符串前缀,文件描述符fd、,字符打印流作者,字符串[]参数)
将LoaderManager的状态打印到给定流中。
静止的无效 启用调试日志记录(启用布尔值)
控制框架的内部加载程序管理器是否调试日志已打开。
摘要<D>装载机<D> 获取加载器(int id)
返回具有给定id的Loader,如果没有匹配的Loador,则返回null找到。
摘要<D>装载机<D> initLoader(初始化加载程序)(int id,捆绑参数,加载器回调<D> 回调)
确保加载程序已初始化并处于活动状态。
摘要<D>装载机<D> 重新启动加载程序(int id,捆绑参数,加载器回调<D> 回调)
启动新的或重新启动现有的装载机在里面这位经理,注册回拨,并且(如果活动/片段当前已启动)开始加载它。
[展开]
继承的方法
来自班级java.lang.Object(java.lang.对象)

公共建筑商

公众的 加载器管理器 ()

已在中添加API级别11

公共方法

公众摘要无效 驱逐装载机 (int id)

已在中添加API级别11

停止并删除具有给定ID的加载程序。如果此加载程序之前已通过向客户端报告数据onLoadFinished(加载器,对象),一个电话将被制作成onLoaderReset(装载机).

公众摘要无效 倾倒 (字符串前缀,文件描述符fd、,字符打印流作者,字符串[]参数)

已在中添加API级别11

将LoaderManager的状态打印到给定流中。

参数
前缀 要在每行前面打印的文本。
fd公司 转储发送到的原始文件描述符。
作家 要设置转储的PrintWriter。
参数 转储请求的其他参数。

公众静态无效 启用调试日志记录 (启用布尔值)

已在中添加API级别11

控制框架的内部加载程序管理器是否调试日志已打开。如果启用,您将在logcat中看到如下输出该框架执行加载器操作。

公众摘要装载机<D> 获取加载器 (int id)

已在中添加API级别11

返回具有给定id的Loader,如果没有匹配的Loador,则返回null找到。

公众摘要装载机<D> initLoader(初始化加载程序) (int id,捆绑参数,加载器回调<D> 回调)

已在中添加API级别11

确保加载程序已初始化并处于活动状态。如果装载机没有已经存在,则创建一个,并且(如果活动/片段当前是started)启动装载机。否则,上次创建的重新使用装载机。

无论哪种情况,给定的回调都与加载器关联,并且将在加载程序状态更改时调用。如果在呼叫点调用方处于启动状态,请求的加载程序已经存在并生成了数据,那么回调onLoadFinished(装载机,D)立即调用(在此函数内),因此您必须做好准备让这一切发生。

参数
身份证件 此加载程序的唯一标识符。可以是你想要的任何东西。标识符的作用域是特定的LoaderManager实例。
参数 施工时提供给装载机的可选参数。如果加载程序已经存在(不需要创建新的加载程序),则参数将被忽略,并继续使用最后一个参数。
回调 LoaderManager将调用以报告的接口加载程序状态的更改。必修的。

公众摘要装载机<D> 重新启动加载程序 (int id,捆绑参数,加载器回调<D> 回调)

已在中添加API级别11

启动新的或重新启动现有的装载机在里面这位经理,注册回拨,并且(如果活动/片段当前已启动)开始加载它。如果之前有一个id相同的加载器启动后,当新加载程序完成时,它将自动被销毁它的工作。回调将在旧加载程序之前传递已被销毁。

参数
身份证件 此加载程序的唯一标识符。可以是你想要的任何东西。标识符的作用域是特定的LoaderManager实例。
参数 施工时提供给装载机的可选参数。
回调 LoaderManager将调用以报告的接口加载程序状态的更改。必修的。