处理Android SQLite -&n… 分类: Android数据存储 2014-05-30 10:58 95人阅读 评论(0) 收藏
2014-05-30 10:58
701 查看
Android SQLite - close() was never explicitly called on
database
guibin.beijing@gmail.com
在开发Android应用过程中,如果不小心会遇到如下所示的异常:
引用
E/Database(3150): close() was never explicitly called on database
......
解决其实很简单,只要复写activity的onDestroy函数,在onDestroy中关闭数据库即可。
Java代码
SQLite - close() was never explicitly called " />
@Override
protected void onDestroy() {
super.onDestroy();
if (dbHelper != null) {
dbHelper.close();
}
}
不要忘记在dbHelper即Database
Adapter中添加close函数,如下所示:
Java代码
SQLite - close() was never explicitly called " />
public void close() {
if (mDbHelper != null) {
mDbHelper.close();
}
}
下面详细说说onDestory函数。onDestory函数用于在activity被销毁前执行最终的清理工作。这个destory行为发生在:
1) 该activity被其他人调用了它的finish函数
2) 或者由于系统需要回收资源而临时销毁该activity实例。
在程序中可以使用isFinishing函数来判别具体是因为以上哪种原因销毁该activity。
注意:
不要把存储数据的逻辑放在onDestroy函数中,这个回调函数只是用来清理释放资源的,比如释放与该activity相关的线程,关闭数据库等。
不建议把存储数据的逻辑放在onDestroy中的原因是在某些情况下,系统会简单的kill该activity所在的主线程而不调用onDestroy。
那么存储数据的逻辑应该放在哪里呢?答案是 onPause() 和
onSaveInstanceState(Bundle)中。
onSaveInstanceState(Bundle)会在该activity被系统kill前调用,以至于将来该activity能从之前存储的状态恢复。
onPause会在该activity进入后台而未被系统杀掉时调用。
onSaveInstanceState(Bundle)和onPause有点让人混淆,这两者的区别是:onPause是activity的生命周期的一部分,它一定会被调用(当该activity进入后台或者即将被销毁),而onSaveInstanceState(Bundle)则不是activity生命周期的一部分,不一定会被调用。
database
guibin.beijing@gmail.com
在开发Android应用过程中,如果不小心会遇到如下所示的异常:
引用
E/Database(3150): close() was never explicitly called on database
......
解决其实很简单,只要复写activity的onDestroy函数,在onDestroy中关闭数据库即可。
Java代码
SQLite - close() was never explicitly called " />
@Override
protected void onDestroy() {
super.onDestroy();
if (dbHelper != null) {
dbHelper.close();
}
}
不要忘记在dbHelper即Database
Adapter中添加close函数,如下所示:
Java代码
SQLite - close() was never explicitly called " />
public void close() {
if (mDbHelper != null) {
mDbHelper.close();
}
}
下面详细说说onDestory函数。onDestory函数用于在activity被销毁前执行最终的清理工作。这个destory行为发生在:
1) 该activity被其他人调用了它的finish函数
2) 或者由于系统需要回收资源而临时销毁该activity实例。
在程序中可以使用isFinishing函数来判别具体是因为以上哪种原因销毁该activity。
注意:
不要把存储数据的逻辑放在onDestroy函数中,这个回调函数只是用来清理释放资源的,比如释放与该activity相关的线程,关闭数据库等。
不建议把存储数据的逻辑放在onDestroy中的原因是在某些情况下,系统会简单的kill该activity所在的主线程而不调用onDestroy。
那么存储数据的逻辑应该放在哪里呢?答案是 onPause() 和
onSaveInstanceState(Bundle)中。
onSaveInstanceState(Bundle)会在该activity被系统kill前调用,以至于将来该activity能从之前存储的状态恢复。
onPause会在该activity进入后台而未被系统杀掉时调用。
onSaveInstanceState(Bundle)和onPause有点让人混淆,这两者的区别是:onPause是activity的生命周期的一部分,它一定会被调用(当该activity进入后台或者即将被销毁),而onSaveInstanceState(Bundle)则不是activity生命周期的一部分,不一定会被调用。
相关文章推荐
- android listview与sqlite数… 分类: Android数据存储 2014-05-30 10:58 67人阅读 评论(0) 收藏
- [ZZ]android sqllite数… 分类: Android数据存储 2014-05-30 10:58 61人阅读 评论(0) 收藏
- Android创建和使用数据库详… 分类: Android数据存储 2014-05-30 10:58 82人阅读 评论(0) 收藏
- Android: R cannot&nbsp… 分类: Android开发 2014-05-30 10:58 80人阅读 评论(0) 收藏
- Android创建和使用数据库详… 分类: Android数据存储 2014-05-30 10:58 71人阅读 评论(0) 收藏
- android RadioGroup和RadioB… 分类: Android开发 2014-05-30 10:58 75人阅读 评论(0) 收藏
- android中的数据库操作ZZ 分类: Android数据存储 2014-05-30 10:58 88人阅读 评论(0) 收藏
- Android数据库 之 SQLite数据库zz 分类: Android开发 2014-05-30 10:58 81人阅读 评论(0) 收藏
- try catch finally 用法 分类: Android其他 2014-05-30 10:58 54人阅读 评论(0) 收藏
- android创建数据库(SQLite)保存图片示例ZZ 分类: Android数据存储 2015-03-22 09:58 41人阅读 评论(0) 收藏
- 安卓开发-Activity中finish()&nbsp… 分类: Android Activity 2014-05-30 10:58 53人阅读 评论(0) 收藏
- Android数据库Cursor操作:I… 分类: Android数据存储 2014-05-30 10:58 70人阅读 评论(0) 收藏
- android 完整地操作数据库--… 分类: Android开发 2014-05-30 10:58 93人阅读 评论(0) 收藏
- Android模拟器无法上网解决方案&nb… 分类: Android安装及配置 2014-05-30 10:58 74人阅读 评论(0) 收藏
- Android 混淆代码学习以及And… 分类: Android开发 2014-05-30 10:55 95人阅读 评论(0) 收藏
- android 日期控件 dateP… 分类: Android开发 2014-05-30 10:56 58人阅读 评论(0) 收藏
- 为Android App程序签名ZZ 分类: Android开发 2014-05-30 10:54 96人阅读 评论(0) 收藏
- 在pc上 运行android 4.2 分类: Android开发 2014-05-30 10:53 53人阅读 评论(0) 收藏
- 转:Android App自动化之使用… 分类: Android开发 2014-05-30 10:54 102人阅读 评论(0) 收藏
- android 打开扬声器zz 分类: Android开发 2014-05-30 10:54 41人阅读 评论(0) 收藏