Android 数据库sqlite报错

No implementation found for voidnet.sqlcipher.database.SQLiteDatabase.dbopen(java.lang.String, int) (tried Java_net_sqlcipher_database_SQLiteDatabase_dbopen and Java_net_sqlcipher_database_SQLiteDatabase_dbopen__Ljava_lang_String_2I)

最近一个项目使用到了sqlcipher,在Android7.0以上的手机上,经常会抛出上面这个异常,而且这个异常catch不了。花了大半天时间去解决这个问题,最后定位在内存被回收。这个异常只有点击home键退出到桌面,然后再进入APP时才会抛出,因为我们的APP compileSdkVersion是23,在android7.0以上不能适配全面屏,在应用的底部有一块黑色的区域。第一次打开应用去操作不会报错,点击home键退到桌面,再进入APP(这里每次都会重新打开launch activity)去进行sqlite的操作时就会抛出上面的异常。根据报错信息,定位问题是因为点home退回到桌面时,内存被回收导致sqlcipher的so文件找不到。最后我们的解决方案是不让系统内存被回收,适配屏幕大小,在清单文件中加上<meta-data android:name="android.max_aspect"  android:value="2.3" />这个属性。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容