android之Activity.startManagingCursor方法详解

在使用数据库操作查询数据后,如果是在Activity里面处理,那么很可能就会用到startManagingCursor()方法,在这里讲一下它的作用和使用注意事项.调用这个方法,就是将获得的Cursor对象交与Activity 来管理,这样Cursor对象的生命周期便能与当前的Activity自动同步,省去了自己管理Cursor。看下文档里的注释This method allows

大家好,又见面了,我是全栈君。

在使用数据库操作查询数据后,如果是在Activity里面处理,那么很可能就会用到startManagingCursor()方法,在这里讲一下它的作用和使用注意事项.

调用这个方法,就是将获得的Cursor对象交与Activity 来管理,这样Cursor对象的生命周期便能与当前的Activity自动同步,省去了自己管理Cursor。

看下文档里的注释

This method allows the activity to take care of managing the given Cursor‘s lifecycle for you based on the activity’s lifecycle. That is, when the activity is stopped it will automatically call Cursor.deactivate on the given Cursor, and when it is later restarted it will call Cursor.requery for you. When the activity is destroyed, all managed Cursors will be closed automatically. If you are targeting android.os.Build.VERSION_CODES.HONEYCOMB or later, consider instead using LoaderManager instead, available via getLoaderManager().

Warning: Do not call Cursor.close() on cursor obtained from managedQuery, because the activity will do that for you at the appropriate time. However, if you call stopManagingCursor on a cursor from a managed query, the system will not automatically close the cursor and, in that case, you must call Cursor.close().

 

看不懂没关系,下面三条懂了就行:
1.这个方法使用的前提是:游标结果集里有数据记录。
所以,在使用之前,先对Cursor是否为null进行判断,如果Cursor != null,再使用此方法
 
2.如果使用这个方法,最后也要用stopManagingCursor()来把它停止掉,以免出现错误。
 
3.使用这个方法的目的是把获取的Cursor对象交给Activity管理,这样Cursor的生命周期便能和Activity自动同步,
省去自己手动管理。如果不调用,那么工作就要你自己来做,在Activity被stopped时,调用Cursor.deactivate,在restart的时候调用Cursor.requery,还有其他状态也最好都与Activity保持同步,以免出现一些错误,不过,为什么不用现成的startManagingCursor,省时又省力.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121427.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 读书笔记摘抄读后感大全_谈美读书笔记摘抄感悟

    读书笔记摘抄读后感大全_谈美读书笔记摘抄感悟推荐序1 什么是小米跟苹果正面撕的底气?认知盈余是所有互联网商业模式的一大基础理论,我用一句话总结为:下班时间产生的革命性力量。小米模式的本质,用雷军的话说,就是:硬件+互联网+新零售。品牌的竞争VS流量的竞争乔布斯认为,品牌仅次于技术。他有一个品牌秘方:革命性技术与营销的结合才是苹果成功的关键。苹果能卖出这么高的溢价,最重要一招就是品牌效应,而且是爆品级的品牌效应。我称之为:爆品+品牌…

    2025年8月28日
    5
  • 使用sp_executesql存储过程执行动态SQL查询

    使用sp_executesql存储过程执行动态SQL查询Thesp_executesqlstoredprocedureisusedtoexecutedynamicSQLqueriesinSQLServer.AdynamicSQLqueryisaqueryinstringformat.ThereareseveralscenarioswhereyouhaveanSQLq…

    2022年5月21日
    31
  • 数仓分层ods_跨境电商国内中转仓

    数仓分层ods_跨境电商国内中转仓一、ods层介绍1、保持数据原貌不做任何修改,起到备份数据的作用。2、数据采用LZO压缩,减少磁盘存储空间。100G数据可以压缩到10G以内。3、创建分区表,防止后续的全表扫描,在企业开发中大量使用分区表。4、创建外部表,在企业开发中,除了自己用的临时表,创建内部表外,绝大多数场景都是创建外部表。二、用户行为数据1、启动日志表ods_start_log//创建启动日志…

    2022年10月6日
    2
  • 将图片存储到mysql数据库[通俗易懂]

    将图片存储到mysql数据库[通俗易懂]正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进mysql数据库 如果要图片存进数据库 要将图片转化成二进制。1.数据库存储图片的字段类型要为blob二进制大对象类型2.将图片流转化为二进制下面放上代码实例一、数据库CREATETABLE`photo`(`id`int(11)NOTNULL,`na

    2022年7月12日
    22
  • ORA-12560: TNS: 协议适配器错误 解决方法[通俗易懂]

    ORA-12560: TNS: 协议适配器错误 解决方法[通俗易懂]前言    我在控制台重启oracle服务端监听lsnrctlstart的时候    报错:ORA-12560:TNS:协议适配器错误解决方法    一:检查监听口是否开启。在开始-运行,输入services.msc或者在控制面板-管理工具,进入服务。找…

    2022年6月17日
    104
  • c语言十进制小数转二进制代码_c语言十进制转换成二进制

    c语言十进制小数转二进制代码_c语言十进制转换成二进制十进制转二进制,整数部分采用除以二取余,小数部分采用乘以二取整。网上大多数转换都是针对整数的,这里写一个小数的做个纪念#include#includeintmain(){doublea=0.2784;inti=0;printf(“0.”);for(i=0;i<18;i++){if(a*2>1)

    2022年9月24日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号