我目前正在为我的项目开发一个Android应用程序。
我的项目旨在使用employees
在后台运行多个倒数计时器(不超过50个)。
在每一秒钟,我都要查询我的表格,并更新一些特定的列。
我的查询是getDate();
换行,我正在Handler post delayed
关闭数据库。
这种方法适用于单个线程,但一旦它成为多个线程,
它给我一个类似try catch
的错误。
所以我提出不要关闭数据库,除非整个应用程序关闭。
所以我的问题是,我应该按照我的想法行事吗?还是有更好的方法呢?
答案 0 :(得分:0)
SQLiteOpenHelper (Context context,
String name,
SQLiteDatabase.CursorFactory factory,
int version)
创建辅助对象以创建,打开和/或管理数据库。此方法总是很快返回。在调用getWritableDatabase()或getReadableDatabase()之一之前,实际上不会创建或打开数据库。
和
void close ()
关闭所有打开的数据库对象。
因此,您可能会意识到,获取SQLiteOpenHelper的实例与拥有可访问数据库的对象不同。您需要在您要创建的所有主题中管理您的单例实例,并尊重您对getWritableDatabase()
或getReadableDatabase()
的调用。
修改强>
此外,Official SQLite Documentation中还说明,为了在多线程应用程序中使用,还需要进行其他设置。我不认为我不认为Android不是一个多线程环境,请参阅this answer please。为什么要突破障碍?坚持做得好。做进一步的研究。 Google首先。