我有一个每秒接收一次值的蓝牙服务,以及每隔10秒接收一个位置的GPS服务。所有这些数据必须存储在数据库中。为了避免这两个服务尝试在数据库中同时写入,我创建了一个数据库服务来存储这些数据:蓝牙和GPS服务将其值发送到此服务的广播,此服务将存储它们。我有几个问题:
- 每秒有多少广播可以接收我的数据库? (带广播接收器) - 如果我的数据库服务收到一个新值但没有时间存储前一个值,会发生什么?
答案 0 :(得分:0)
在ContentProvider
实施中包装您的数据库。通常,当您希望能够在应用程序之外公开数据时使用它们,但它也提供了一个用于访问结构化数据的中央,记录良好的API。您可以在内容提供商的方法中保护您的数据库访问权限(例如insert()
,delete()
等。)获取提供商的初始ContentResolver
用法是您遇到的最大上下文切换应该有。之后,幕后的活页夹连接将短路并保持在同一过程中。
每次发送Intent
时,系统都必须与ActivityManagerService
进程中运行的system_server
进行通信。此上下文切换是您不需要并且可以避免的额外开销。此外,不需要队列。只需在提供程序实现中保护您的数据库访问。