码迷,mamicode.com
首页 > 数据库 > 详细

调试WebView出现数据库异常(转载)

时间:2014-12-09 11:51:14      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:android   io   使用   sp   on   文件   数据   bs   as   

Android上面有一个经常会在线上Crash中发现的非必现异常:SQLiteException
这个异常不少人在使用WebView的时候碰到过,它非必现,概率不高,你通常会在线上Crash报告中才会发现它。原因众说纷纭。 这里给两个触发场景:
1、SQLite为了保护db文件一致性,当访问db文件时,会给文件上一个进程锁,这种情况下,如果有另外一个进程再访问这个db文件,就会出错了。 所以,你肯定想到了,你的APK如果满足以下两个条件会触发这个异常: 1、使用了WebView 2、使用了多个进程。 因为WebView会把Cache写到db文件中,肯定会涉及到db操作,这个操作是Application范围的。当使用多进程时,存在不同进程的WebView对同一个db文件进程操作的可能性,异常就会时不时出来了。 
最后,按照Android老码农一惯的风格,当然要给出解决方案: 重写Application.openOrCreateDatabase,让不同的进程创建不同的db文件就好了。
2、CookieSyncManager在强制同步Cookie时也会出现SQLite IO的异常。所以强制同步需要谨慎使用。如果不涉及多进程共享Cookie,最好不要自己强制同步。

调试WebView出现数据库异常(转载)

标签:android   io   使用   sp   on   文件   数据   bs   as   

原文地址:http://www.cnblogs.com/jiuguimianju/p/4152761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!