SQLiteOpenHelper 用单例模式实现后 onCreate 方法不执行的解决过程
来源:互联网 发布:c语言成绩查询系统湖北 编辑:程序博客网 时间:2024/06/07 01:02
前文介绍了过个进程访问数据库时数据库被锁的解决方法,就是用单例模式去实现 SQLiteOpenHelper 方法。详见 SQLiteDatabaseLockedException: database is locked 解决方法
然后回过头来运行时,又出现了问题,如题:就是 SQLiteOpenHelper 初始化后,里面的 onCreate 方法不执行,它不执行,数据库就创建不出来。在网上看示例时,没发现有什么地方是不一样的。
好吧,考(zhe)验(mo)人的时候又到了。
新建一个 demo,一步步仔细排查。
……过程不表。
最后确定问题:
因为我是将数据库文件存储在 sd 卡上的,所以是自定义了一个 Context 类(DatabaseContext)Android使用sqlliteOpenhelper更改数据库的存储路径放到SD卡上,在对数据库进行操作时,要把这个自定义的 DatabaseContext 赋值给传递进来的 Context。我恰恰就是犯了这个错误。
看下代码:
private Context mContext; private static SQLiteDatabase mSQLiteDatabase; public PersonDB(Context pContext) { this.mContext = new DatabaseContext(pContext); this.mSQLiteDatabase = DatabaseHelper.getInstance(pContext); this.mSQLiteDatabase.setLocale(Locale.CHINA); }
在封装好的数据库表中,调用 SQLiteOpenHelper 的单例方法时,我传入的是上层传来的 pContext,而不是已经初始化好的 DatabaseContext(mContext)。
改一下就好了:
private Context mContext; private static SQLiteDatabase mSQLiteDatabase; public PersonDB(Context pContext) { this.mContext = new DatabaseContext(pContext); this.mSQLiteDatabase = DatabaseHelper.getInstance(mContext); this.mSQLiteDatabase.setLocale(Locale.CHINA); }
马虎是病,得治…..((/- -)/
阅读全文
0 0
- SQLiteOpenHelper 用单例模式实现后 onCreate 方法不执行的解决过程
- SQLiteOpenHelper类的onCreate方法什么时候被执行
- SQLiteOpenHelper类的onCreate方法什么时候被执行
- 关于SQLiteOpenHelper类的onCreate方法
- SQLiteOpenHelper类的onCreate方法什么时候被执行--只有database.db不存在的时候
- 解决android程序中oncreate方法中调用百度地图MKSearchListener接口不执行的问题
- 解决android程序中oncreate方法中调用百度地图MKSearchListener接口不执行的问题
- Android 屏幕旋转后防止重新执行onCreate的方法。
- android横竖屏切换,不重新执行onCreate的方法
- 关于activity不执行oncreate方法的问题
- [android]关于SQLiteOpenHelper的onCreate(SQLiteDatabase db)方法调用时机
- 执行onActivityResult()后调用onCreate()方法
- Activity中的onCreate方法不执行问题
- 解决三星note3调用系统拍照结束后,重新执行oncreate 方法
- SQLiteOpenHelper的onCreate和onUpgrade的区别
- SQLiteOpenHelper的oncreate与onupgrade的理解
- SQLiteOpenHelper调用onCreate函数的时机
- AppConext 的onCreate方法执行时机
- JVM内存管理机制
- 重载运算符时的参数和返回类型要用引用的说明
- java.io.IOException: Connection reset by peer
- 设计模式-策略模式
- 文章标题 POJ 3468 : A Simple Problem with Integers (线段树)
- SQLiteOpenHelper 用单例模式实现后 onCreate 方法不执行的解决过程
- 《数据结构(C语言版)》- 绪论
- jqGrid学习
- 北京科技大学-银行系统设计基础知识分享
- 第12篇:ng-class的用法
- Ajax
- 【二叉树】二分查找树,节点删除【Add to List 450. Delete Node in a BST】
- 查看Linux下端口占用情况的命令
- vue-cli——人员管理实例