Android 运行getWritableDatabase()和getReadableDatabase()的频率如何?
我正在编写一个服务、一个内容提供商和多个应用程序。该服务在用户输入时每隔5分钟左右将新数据写入内容提供商的SQLite数据库,并打算永远在后台运行。该应用程序在运行时将显示从内容提供商提取的数据,并在服务将更多数据放入内容提供商的数据库时刷新Android 运行getWritableDatabase()和getReadableDatabase()的频率如何?,android,database,sqlite,Android,Database,Sqlite,我正在编写一个服务、一个内容提供商和多个应用程序。该服务在用户输入时每隔5分钟左右将新数据写入内容提供商的SQLite数据库,并打算永远在后台运行。该应用程序在运行时将显示从内容提供商提取的数据,并在服务将更多数据放入内容提供商的数据库时刷新 假设服务每五分钟只向数据库中插入一次,那么何时是调用SQLiteOpenHelper的getWritableDatabase()/getReadableDatabase()?它是在内容提供商的onCreate()上,还是每次有insert()时都运行它并在
假设服务每五分钟只向数据库中插入一次,那么何时是调用SQLiteOpenHelper的
getWritableDatabase()
/getReadableDatabase()
?它是在内容提供商的onCreate()
上,还是每次有insert()
时都运行它并在insert()的末尾关闭它?每5分钟插入一次的数据将包含多个插入。关于您的特定问题,如果您打算以这种方式使用ContentProvider
,您可能希望打开并关闭每个插入模式。ContentProvider
中没有onDestroy()
钩子,因此没有时间关闭数据库。对于更频繁/随机的访问模式,您只需接受它。对你来说,你最好把它关起来
话虽如此,我不清楚你为什么要麻烦一个内容提供商
。据我所知,这是你如何跨应用程序共享数据的问题——我计划编写多个使用相同数据的应用程序。(我想另一种方法是将数据附加到服务,让每个应用程序查询服务,但我不确定每个选项的优缺点。)@jawonlee:啊,对不起,你在问题中没有提到多个应用程序部分。