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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • executorservice 线程池_并发数与线程数

    executorservice 线程池_并发数与线程数keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止。默认情况下,只有当线程池中的线程数大于corePoolSize时,keepAliveTime才会起作用,直到线程池中的线程数不大于corePoolSize,即当线程池中的线程数大于corePoolSize时,如果一个线程空闲的时间达到keepAliveTime,则会终止,直到线程池中的线程数不超过corePoolSize。但…

    2025年10月18日
    3
  • Java开源报表工具 JasperReports

    Java开源报表工具 JasperReportsJasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。 授权协议:LGPL…

    2022年10月20日
    5
  • Idea激活码最新教程2023.1.3版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.1.3版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 1 3 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 1 3 成功激活

    2025年5月26日
    3
  • jquery下载教程[通俗易懂]

    jquery下载教程[通俗易懂]jquery下载教程建议使用google浏览器下载,不建议使用IE浏览器(没有办法生成.js文件,只能复制粘贴)第一种方法第二种方法

    2022年6月6日
    35
  • pca算法matlab代码(单因素方差分析原理)

    PCA主成分分析原理分析和Matlab实现方法(三)PCA算法主要用于降维,就是将样本数据从高维空间投影到低维空间中,并尽可能的在低维空间中表示原始数据。PCA的几何意义可简单解释为:0维-PCA:将所有样本信息都投影到一个点,因此无法反应样本之间的差异;要想用一个点来尽可能的表示所有样本数据,则这个点必定是样本的均值。1维-PCA:相当于将所有样本信息向样本均值的直线投影;2维-PCA:将样本的平面分布看作椭圆形分布,求出椭圆形的长短轴方向,然后将样本信息投

    2022年4月15日
    53
  • 两数之和,两数之积

    两数之和,两数之积已知两个1~30之间的数字,甲知道两数之和,乙知道两数之积。 甲问乙:”你知道是哪两个数吗?”乙说:”不知道”; 乙问甲:”你知道是哪两个数吗?”甲说:”也不知道”; 于是,乙说:”那我知道了”; 随后甲也说:”那我也知道了”; 这两个数是什么?答案:答案1:为x=1,y=6;甲知道和A=x+y=7,乙知道积B=x*y=6 答案2:为x=1,y=8;甲知道和A=

    2022年5月20日
    39

发表回复

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

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