Android 在服务中使用游标或通过绑定发送数据到服务

Android 在服务中使用游标或通过绑定发送数据到服务,android,service,binding,cursor,Android,Service,Binding,Cursor,我有一个Sqlite数据库,它有一个位置集合。内容提供程序用于访问此数据库 然后,通过单击活动中的位置列表,这些位置将在数据库中标记为活动或不活动 然后运行一个服务,该服务将侦听活动位置,并在到达该位置时执行某些操作 我的问题是,这项服务的最佳运作方式是什么 或者让它监视活动位置的光标,该光标在数据更改时自动更新。包含位置列表的所有活动都必须将位置设置为活动,然后调用服务意图以确保其正在运行 在我看来,这样做的好处是,无论数据库中发生什么,服务都是最新的。但我不确定是否保持一个打开的光标,并在每

我有一个Sqlite数据库,它有一个位置集合。内容提供程序用于访问此数据库

然后,通过单击活动中的位置列表,这些位置将在数据库中标记为活动或不活动

然后运行一个服务,该服务将侦听活动位置,并在到达该位置时执行某些操作

我的问题是,这项服务的最佳运作方式是什么

或者让它监视活动位置的光标,该光标在数据更改时自动更新。包含位置列表的所有活动都必须将位置设置为活动,然后调用服务意图以确保其正在运行

在我看来,这样做的好处是,无论数据库中发生什么,服务都是最新的。但我不确定是否保持一个打开的光标,并在每次位置改变时遍历它是有效的

另一种方法是让活动在数据库中将位置设置为活动的,然后绑定到服务并向其发送要侦听的位置数据。然后,该服务将其存储在一个listarray中,每当发生位置更改时,遍历该列表以查看是否已到达该位置

这样做的缺点是,对于每个位置修改,服务都必须绑定到,并且位置也必须更改。一个优点可能是没有打开游标,只存储一个位置为的小listarray


那么是游标在服务中还是绑定到服务?或者我还缺少更好的方法吗?

这是效率与代码复杂性之间的平衡

我会在提供者上注册一个观察者,然后在每次修改提供者时更新我的活动位置列表,然后根据当前位置扫描列表。虽然调用ContentObserver.onChange()时必须重新查询提供程序,但观察者不需要与游标关联

记住在后台做这项工作。使用IntentService或编写运行HandlerThread的您自己的服务;我更喜欢使用IntentService或Service,因为它们不会像AsyncTask那样受到活动生命周期事件的影响。

我们可以在Service中使用Volley?