android sqlitelog,Android Lollipop 5.0.1 SQLiteLog POSIX错误11 SQLite错误:3850

我在升级应用程序以支持Android Lollipop时遇到问题.该应用程序实现了一个SyncAdapter,它通过内容提供程序在数据库上写入.同时,用户正在浏览应用程序的前端,其中加载程序从数据库中读取相同的数据.加载程序还可以监听数据更改.

现在,如果我在前Lollipop设备上运行该程序,一切正常,没有任何错误输出.

在Lollipop上,我收到以下logcat消息:

11:20:59.344 22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850

11:20:59.364 22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850

11:20:59.364 22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850

11:20:59.364 22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850

现在,来自SQLite文档:

(3850)SQLITE_IOERR_LOCK

SQLITE_IOERR_LOCK错误代码是SQLITE_IOERR的扩展错误代码,表示咨询文件锁定逻辑中的I/O错误.通常SQLITE_IOERR_LOCK错误表示获取PENDING锁定时出现问题.但是,它也可以指示Mac上使用的某些专用VFS上的各种锁定错误.一切似乎都在高水平上正常工作(即执行读取和写入)

和:

PENDING锁意味着持有锁的进程想要尽快写入数据库,并且只是等待所有当前的SHARED锁清除,以便它可以获得EXCLUSIVE锁.如果PENDING锁处于活动状态,则不允许对数据库使用新的SHARED锁,但允许继续使用现有的SHARED锁.

我知道SQLite版本已经被Lollipop中的几个主要版本更新了,所以我很容易认为错误是由于我无法隔离的SQLite的一些新行为.

但是,从更高级别的角度看,一切似乎都运行良好(App不会崩溃,执行读写操作,帧率不会下降 - 至少对人眼来说)但我不想忽略这个问题发布应用程序,直到我确定它不会导致数据损坏或麻烦.

也许我对棒棒糖关于锁和多进程数据库访问的一些重要更改缺失了,但我觉得这是一个关于Art/Dalvik域的较低级别的问题,因此必须在NDK上下文中修复.

有没有办法解决这个问题而不分发特定版本的SQLite?是否有任何清单/ SQLite选项来避免错误?

提前致谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值