我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

 onLoadFinished与onLoaderReset回调

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

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

//这个Adapter被用于显示列表的数据. SimpleCursorAdapter mAdapter; ...  public void onLoadFinished(Loader<Cursor> loader, Cursor data) {   // Swap the new cursor in. (The framework will take care of closing the   // old cursor once we return.)   mAdapter.swapCursor(data); }

onLoaderReset

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

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

// 这个Adapter被用于显示列表的数据SimpleCursorAdapter mAdapter;...  public void onLoaderReset(Loader<Cursor> loader) {   //此处是用于上面的onLoadFinished()的游标将被关闭时执行,我们需确保我们不再使用它  mAdapter.swapCursor(null); }

例子

作为一个例子,这里完整实现了一个Fragment显示一个包含从联系人contentprovider 返回查询数据的ListView的内容的功能,它使用一个CursorLoader来管理对provider的查询。

public static class CursorLoaderListFragment extends ListFragment     implements OnQueryTextListener, LoaderManager.LoaderCallbacks<Cursor> {    // 这是用于显示列表数据的Adapter   SimpleCursorAdapter mAdapter;    // 如果非null,这是当前的搜索过虑器   String mCurFilter;    @Override public void onActivityCreated(Bundle savedInstanceState) {     super.onActivityCreated(savedInstanceState);      // 如果列表中没有数据,就给控件一些文字去显示.在一个真正的应用     // 中这应用资源中取得.     setEmptyText("No phone numbers");      // 我们在动作栏中有一个菜单项.     setHasOptionsMenu(true);      // 创建一个空的adapter,我们将用它显示加载后的数据     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);      // 准备loader.可能是重连到一个已存在的或开始一个新的     getLoaderManager().initLoader(0, null, this);   }    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {     // 放置一个动作栏项用于搜索.     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(this);     item.setActionView(sv);   }    public boolean onQueryTextChange(String newText) {     // 在动作栏上的搜索字串改变时被调用.更新     //搜索过滤器,并重启loader来执行一个新的查询     mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;     getLoaderManager().restartLoader(0, null, this);     return true;   }    @Override public boolean onQueryTextSubmit(String query) {     // 我们不关心这个方法     return true;   }    @Override public void onListItemClick(ListView l, View v, int position, long id) {     // 写入你想写的代码     Log.i("FragmentComplexList", "Item clicked: " + id);   }    // 这是我们想获取的联系人中一行的数据.   static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {     Contacts._ID,     Contacts.DISPLAY_NAME,     Contacts.CONTACT_STATUS,     Contacts.CONTACT_PRESENCE,     Contacts.PHOTO_ID,     Contacts.LOOKUP_KEY,   };   public Loader<Cursor> onCreateLoader(int id, Bundle args) {     // 当一个新的loader需被创建时调用.本例仅有一个Loader,     //所以我们不需关心ID.首先设置base URI,URI指向的是联系人     Uri baseUri;     if (mCurFilter != null) {       baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,           Uri.encode(mCurFilter));     } else {       baseUri = Contacts.CONTENT_URI;     }      // 现在创建并返回一个CursorLoader,它将负责创建一个     // Cursor用于显示数据     String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND ("         + Contacts.HAS_PHONE_NUMBER + "=1) AND ("         + Contacts.DISPLAY_NAME + " != '' ))";     return new CursorLoader(getActivity(), baseUri,         CONTACTS_SUMMARY_PROJECTION, select, null,         Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");   }    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {     // 将新的cursor换进来.(框架将在我们返回时关心一下旧cursor的关闭)     mAdapter.swapCursor(data);   }    public void onLoaderReset(Loader<Cursor> loader) {     //在最后一个Cursor准备进入上面的onLoadFinished()之前.     // Cursor要被关闭了,我们需要确保不再使用它.     mAdapter.swapCursor(null);   } }

关于Android应用中onLoadFinished与onLoaderReset如何进行回调就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

Python如何调用kafka进行构建与应用

本篇文章为大家展示了Python如何调用kafka进行构建与应用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。近期遇到一个需求就是我们需要把当前比较耗费资源的接口开发成异步通讯的机制,简单来说就是有
2023-06-16

Android应用中如何对xml进行解析

本篇文章给大家分享的是有关Android应用中如何对xml进行解析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。XmlActivity package com.Android.
2023-05-31

Android 应用中是如何进行渲染的

Android 应用中是如何进行渲染的?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。基础知识CPU: 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理
2023-05-31

Android应用中如何对文件进行压缩与解压缩

Android应用中如何对文件进行压缩与解压缩?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用场景当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样
2023-05-31

Android应用开发中如何进行单元测试

本文主要和大家分享如何在Android应用开发过程中如何进行单元测试,个人在做项目的过程中,觉得单元测试很有必要,以保证我们编写程序的正确性。下面我们先大概了解下单元测试,以及单元测试的作用。 单元测试(又称为模块测试)是针对程序模块(
2022-06-06

如何在Android应用中对图片进行压缩

本篇文章给大家分享的是有关如何在Android应用中对图片进行压缩,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、质量压缩法设置bitmap options属性,降低图片的质
2023-05-31

Android应用中怎么利用WebView与Javascript进行交互

Android应用中怎么利用WebView与Javascript进行交互?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android中可以使用WebView加载网页,同时And
2023-05-31

如何进行HttpHandler与HttpModule的分析与应用

这篇文章将为大家详细讲解有关如何进行HttpHandler与HttpModule的分析与应用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。神秘的HttpHandler与HttpModule大
2023-06-17

Android应用中是如何对登录进行处理的

Android应用中是如何对登录进行处理的?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。先从核心代码开始看:public class GoLoginUtil { public
2023-05-31

Android 应用中如何实现按返回键后台运行

这篇文章将为大家详细讲解有关Android 应用中如何实现按返回键后台运行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android应用开发按下返回键退向后台运行我们日常使用的很多Andr
2023-05-31

如何在Android应用中对json数据进行解析

这篇文章将为大家详细讲解有关如何在Android应用中对json数据进行解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、android自带解析 json_btn.setOnClickL
2023-05-31

Android应用中如何将图片的单位进行转换

这篇文章给大家介绍Android应用中如何将图片的单位进行转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ImageSwitcher: 图像查看器,好像是老组件了,今天先更一个基础的组件,后期如果有时间继续扩展. 那
2023-05-31

android硬件中的返回按钮如何利用ionic2进行处理

本篇文章给大家分享的是有关android硬件中的返回按钮如何利用ionic2进行处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。问题注册安卓硬件返回按钮事件是必须的,因为用户
2023-05-31

android应用中怎么对视频进行加密与解密

本篇文章为大家展示了android应用中怎么对视频进行加密与解密,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MainActivity.java/** * 视频加密/解密 * * @author
2023-05-31

Android应用中的webview怎么与JavaScript进行数据交互

本篇文章为大家展示了Android应用中的webview怎么与JavaScript进行数据交互,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先需要初始化WebView以及设置支持JavaScrip
2023-05-31

如何在Android应用中使用C++对Bitmap对象进行处理

这篇文章将为大家详细讲解有关如何在Android应用中使用C++对Bitmap对象进行处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。步骤如下:a.编写JNI接口函数//java接口函数p
2023-05-31

如何用Python进行回归分析与相关分析

这篇文章主要介绍了如何用Python进行回归分析与相关分析,这两部分内容会放在一起讲解,文中提供了解决思路以及部分实现代码,需要的朋友可以参考下
2023-03-22

基于Android中Webview使用自定义的javascript进行回调的问题详解

先说为什么需要讨论这个问题。 现在很多的手机应用,都可能会直接嵌入一个web页面。这样做的好处:一个是功能更新方便,维护起来容易,只需要维护服务器的页面即可,不需要更新客户端;另一个是功能通用,不仅android可以用,ios也可以用,sy
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录