关于OTA升级从高版本到低版本升级后,数据库无法降级引起的异常分析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于OTA升级从高版本到低版本升级后,数据库无法降级引起的异常分析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2556字,纯文字阅读大概需要4分钟。
内容图文
1.问题描述:
OTA升级从高版本升级到低版本成功,开机后桌面闹钟图标不见了,且桌面闹钟报错,无法打开应用。
参考log如下:01-14 20:29:22.290: E/AndroidRuntime(2722): FATAL EXCEPTION: AsyncHandler01-14 20:29:22.290: E/AndroidRuntime(2722): Process: com.android.deskclock, PID: 272201-14 20:29:22.290: E/AndroidRuntime(2722): android.database.sqlite.SQLiteException: Can‘t downgrade database from version 10 to 701-14 20:29:22.290: E/AndroidRuntime(2722): at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:361)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:255)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)01-14 20:29:22.290: E/AndroidRuntime(2722): at com.android.deskclock.provider.ClockProvider.query(ClockProvider.java:96)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.content.ContentProvider.query(ContentProvider.java:922)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.content.ContentProvider$Transport.query(ContentProvider.java:213)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.content.ContentResolver.query(ContentResolver.java:462)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.content.ContentResolver.query(ContentResolver.java:405)01-14 20:29:22.290: E/AndroidRuntime(2722): at com.android.deskclock.provider.AlarmInstance.getInstances(AlarmInstance.java:188)01-14 20:29:22.290: E/AndroidRuntime(2722): at com.android.deskclock.alarms.AlarmStateManager.FixAlarmInstancesForReboot(AlarmStateManager.java:684)01-14 20:29:22.290: E/AndroidRuntime(2722): at com.android.deskclock.AlarmInitReceiver$1.run(AlarmInitReceiver.java:102)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.os.Handler.handleCallback(Handler.java:808)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.os.Handler.dispatchMessage(Handler.java:103)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.os.Looper.loop(Looper.java:193)01-14 20:29:22.290: E/AndroidRuntime(2722): at android.os.HandlerThread.run(HandlerThread.java:61)
2.分析结果:
从上面的log中可以看到,此类异常由数据库无法将降级导致,此时恢复出厂设置可以恢复正常。3.解决方案
可通过在DatabaseHelper.java重写父类SQLiteOpenHelper.java的onDowngrade()方法来规避该问题,或者直接在SQLiteOpenHelper.java中对该方法就行修改。
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {throw new SQLiteException("Can‘t downgrade database from version " +oldVersion + " to " + newVersion);}
原文:http://blog.csdn.net/huangyabin001/article/details/42740147
内容总结
以上是互联网集市为您收集整理的关于OTA升级从高版本到低版本升级后,数据库无法降级引起的异常分析全部内容,希望文章能够帮你解决关于OTA升级从高版本到低版本升级后,数据库无法降级引起的异常分析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。