`
yhz61010
  • 浏览: 562758 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12274
社区版块
存档分类
最新评论

Android 关于管理 cursor 的 startManagingCursor 问题

阅读更多
最近在开发 Android 时遇到了一个如下异常:

引用
java.lang.RuntimeException: Unable to resume activity {com.xxx.xxx/com.xxx.xxx.xxxActivity}: java.lang.IllegalStateException: trying to requery an already closed cursor


之前从来没遇到过。后来分析了下,可能是和我进行了 Android 版本升级有关,之前测试时一直使用的是 2.3,后来升级到了 4.0 就出了这个问题。

上网调查了下,发现了如下解决办法,http://stackoverflow.com/a/6300437。原因是 Android HONEYCOMB(API 11)以下版本,在管理 cursor 时,若使用 startManagingCursor(cursor) 就会出现这个错误。解决办法,详见上面的链接。

public class VersionUtil { ... public static final int HONEYCOMB = 11; ... }

@Override
public void startManagingCursor(Cursor c) {

    // To solve the following error for honeycomb:
    // java.lang.RuntimeException: Unable to resume activity 
    // java.lang.IllegalStateException: trying to requery an already closed cursor
    if (Build.VERSION.SDK_INT < VersionUtil.HONEYCOMB) {
        super.startManagingCursor(c);
    }
}
分享到:
评论

相关推荐

    Android应用程序之间数据共享—ContentResolver(1)[定义].pdf

    在Android平台上,应用程序之间共享数据是一个常见的需求。为了实现这一点,Android提供了一套机制,其中核心组件是ContentResolver和ContentProvider。ContentResolver允许应用程序对ContentProvider进行数据查询、...

    Android获取通话时间实例分析

    MainActivity.this.startManagingCursor(cursor); // 初始化变量 boolean hasRecord = cursor.moveToFirst(); long incoming = 0L; // 接听时长 long outgoing = 0L; // 拨打时长 int count = 0; // 遍历Cursor ...

    CursorAdapter demo

    - 确保在适当的时候调用 `startManagingCursor()` 和 `stopManagingCursor()`,以管理 Cursor 的生命周期。 通过这个 "CursorAdapter demo",你可以了解到如何在实际项目中有效地展示数据库查询结果,特别是在处理...

    Android列表实现(2)_游标列表案例讲解

    `startManagingCursor(c)`方法用于管理Cursor对象的生命周期,确保当Activity销毁时,Cursor也会被正确关闭,避免内存泄漏。 接下来,我们创建了一个`SimpleCursorAdapter`实例。这个适配器用于将Cursor中的数据...

    android listview的几种用法

    startManagingCursor(cursor); ListAdapter listAdapter = new SimpleCursorAdapter( this, android.R.layout.simple_list_item_2, cursor, new String[]{People.NAME}, new int[]{android.R.id.text1}); ...

    A​n​d​r​o​i​d​开​发​实​例​:​获​取​电​话​薄​的​信​息

    3. 调用 `startManagingCursor()` 来管理 `Cursor` 对象,确保它在不再使用时被正确关闭。 4. 创建 `String[] get` 数组,指定我们想要获取的列,如联系人的姓名(`Phones.NAME`)和电话号码(`Phones.NUMBER`)。 5...

Global site tag (gtag.js) - Google Analytics