我有一个 IntentService 执行以下操作: - (可能)向 SQLite 数据库添加一个条目 - 遍历数据库中的条目以查看是否应采取行动,如果是,则更新/删除该条目
一个新的 IntentService 可能会在一个已经运行的时候创建,这意味着他们将不得不为数据库访问而战。由于我在线程方面的经验不存在,而且在一般数据库方面的经验非常有限,我不确定如何最好地处理这个问题。
我的计划是这样的:(-如果添加条目,锁定数据库,添加条目,解锁数据库)
- 锁定数据库
- 返回要处理的第一个条目(如果有)
- 更新条目,以便后续数据库扫描不会将该条目作为应处理的条目返回
- 解锁数据库
- 进程入口
- 如果条目处理成功,锁定数据库,从数据库中删除条目,解锁数据库
- 重复直到没有更多条目要处理
这对我来说很有意义,在纸上...... IntentService 的多个实例应该能够并排工作。虽然我更希望一次只有一个 IntentService 做它的事情,因为它们也将执行网络操作。这是一个好方法吗?有更好的方法吗?