Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了禁用Android Pie中的sqlite Write-Ahead日志记录大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Android Pie sqlite认情况下已启用Write-Ahead日志记录(WAL).这仅在Pie设备中导致现有代码出错.
由于我访问数据库的方式,我无法使sqliteDatabase.disableWriteAheadLogging()或PRAGMA journal_mode成功关闭WAl.我想用一个名为db_compatibility_wal_supported的Android设置完全禁用WAL:

Compatibility WAL (Write-Ahead Logging) for Apps

有谁知道如何配置这个?我不知道这个文件是否可以在启动时以编程方式更改,或者是否手动更改.

关于这个问题的进一步细节

我的应用程序中有一个sqlite数据库(20mb / 250k记录).此db是使用我的服务器上的普通java生成的.它包含一个食物数据库,应用程序的用户可以添加数据库(并更新服务器).这存储在Android中的assets文件夹中.
在首次安装期间,数据库将从资产复制到app文件夹,以便可以使用以下方法将其写入:

Copy SQLite database from assets folder

不幸的是,一旦我开始使用sqlDroid写入数据库,wal就会启用并且原始数据库中的表已经消失,只剩下任何新创建的表.然而,数据库的大小仍然是20mb.所有数据库错误都是由于缺少表.
表复制和写入方法在Pie之前的Android版本中完美运行.

解决方法@H_675_23@
@Rockvole请分享您所面临的错误,这有助于我们找到合适的解决方案.

同时,我明白你想要在Android馅饼中关闭那个WAL并且你正在使用“sqlDroid”lib来创建sqlite DB.

这个lib内部使用“sqliteDatabase”在本地存储数据,我认为你需要在“sqliteDatabase”类中调用sqliteDatabase.disableWriteAheadLogging()”,其中数据库实例创建的包名是“package org.sqldroid;”

获取内部sqliteDatabase实例并调用disableWriteAheadLogging().

第二个解决方案是在values文件夹中创建“config.xml”,并且“< bool name =”db_compatibility_wal_supported“> false< / bool>”并运行并检查其工作.

大佬总结

以上是大佬教程为你收集整理的禁用Android Pie中的sqlite Write-Ahead日志记录全部内容,希望文章能够帮你解决禁用Android Pie中的sqlite Write-Ahead日志记录所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。