使用Android的内置SQLite存储进行并发数据存储是否可以?

时间:2013-06-18 08:27:13

标签: android sqlite android-sqlite

我正在编写一个Android应用程序,它将包含

  1. 后台服务1,它以固定间隔读取传感器值(例如,程序每隔五分钟读取传感器值30秒,在测量期间值每秒读取两次),
  2. 后台服务2,它分析传感器值并从中计算一些指标,
  3. 后台服务3,在3-7天内运行一次并从数据库中删除旧数据(传感器值和指标)和
  4. 一个GUI活动,显示一些传感器值和/或指标,如果用户打开应用程序并按下某个按钮。
  5. 将有2个表格 - SensorDataMetrics。后台服务1将写入SensorData。后台服务2将从SensorData读取并写入Metrics。后台服务3将从两个表中删除行。 GUI活动将从两个表中读取。

    我在考虑如何为传感器值和指标实现线程安全存储。

    一个明显的解决方案是使用内置的SQLite数据库。

    我有以下问题:

    1. 在此设置中使用是否安全?
    2. Android的SQLite会每秒处理两次数值(longdouble)吗?
    3. 它是否支持并发访问(当GUI活动在SensorData上发出查询并且后台服务1尝试同时写入同一个表时会发生什么?)

1 个答案:

答案 0 :(得分:2)

  1. 使用SQLiteOpenHelper作为单例,您是线程安全的。 SQLiteOpenHelper处理sqlite数据库的锁定(这是处理并发读/写的sqlite机制)。
  2. 这是值得测试的。但是,一般来说,你是否需要经常写入数据库?您可以将数据缓存在内存中,并以较慢的速率将它们刷新到数据库。
  3. 简短的回答是'是的它支持并发访问'。有关详细信息,请查看此sqlite document,android sqlite只是一个包装器。您可以将其配置为在阅读本文档后以您认为合适的方式运行。