SQLiteDatabase资源释放
来源:互联网 发布:手机淘宝首页免费模板 编辑:程序博客网 时间:2024/06/05 21:06
SQLiteDatabse是android SDK提供的一个sqlite管理类,用于创建,删除,执行sql命令等任务。每一个sqlite数据库对应着一个SQLiteDatabase帮助类。SQLiteDatabase提供了一系列的静态工厂方法用于创建一个SQLiteDatabase实例,这个实例持有着管理sqlite数据库的必要资源,这些资源的释放需要用户手动的调用close函数。SQLiteDatabase的资源释放是通过引用计数来实现的。产生一个新的SQLiteDatabase的时候,引用计数为1.每当有其他的对象使用SQLiteDatabase来操作sqlite的时候,引用计数加1,操作完毕之后,引用计数减1.当用户主动调用SQLiteDatabase的close函数的时候,先将引用计数减1,然后检查计数是否为0,如果为0,那么就需要释放SQLiteDatabase所持有的资源。
SQLiteDatabase类图结构如下:
AutoCloaseable是一个接口,含有成员void close()。抽象类SQLiteCloseable管理着引用计数,函数acquireReference将引用计数加1,releaseReference将引用计数减1.当引用计数减为0的时候,会调用onAllReferencesReleased()函数,这个函数中用来处理SQLiteDatabase所持有的资源。
这个简易的框架提供了处理数据库资源的一种方式,主动提供close函数,而不依赖finalize函数做数据库资源释放的动作。同时,巧妙的利用引用计数来管理资源的释放,这为多线程使用同一SQLiteDatabase实例能够正确的处理资源释放提供了保证。不会导致一个线程在使用SQLiteDatabase的时候,另一个线程调用close导致数据库被关闭的错误。因为close函数也只是将引用计数减1.只有当引用计数为0的时候才会做真正的资源释放动作。
- SQLiteDatabase资源释放
- 资源释放
- 释放资源
- 释放资源
- 释放资源
- 释放资源
- 释放资源
- 资源释放
- SQLiteDatabase
- SQLiteDatabase
- SQLiteDatabase
- SqLiteDatabase
- SQLiteDataBase
- SQLiteDatabase
- SQLiteDatabase
- SQLiteDatabase
- SQLiteDatabase
- SQLiteDatabase
- android开发------编写用户界面之相对布局
- 站点地图静态生成功能
- word文档里四级目录无法显示
- Chipmump文档
- 黑马程序员_Java基础[29]_线程间通讯、解决问题、lock
- SQLiteDatabase资源释放
- eclipse 添加 外部 jar包 方法
- C#初步接触
- 黑马程序员-----------------7K面试-交通灯
- Linux下远程文件传输命令——scp
- 屏蔽 logcat中某个tag的方法 tag:^(?!TAG)
- 创业圣经--3C
- 如何在cocoa application中执行管理员操作
- 回车符('\r')和换行符('\n')