0

我得到了一个生成用户位置的服务。我还有一个带有服务实例的线程,它从服务中获取位置并将其发送到数据库。该线程正在休眠 1 分钟,然后再次从服务中请求地址并将其发送到数据库。

我的问题是我应该创建一个服务而不是这个线程,并且第二个服务将每 1 分钟启动一次吗?优点是当他不需要喜欢线程时服务不会运行,但缺点是我必须每 1 分钟创建一个新连接。

什么是更好的?谁更有效率?

4

2 回答 2

2

我通常的想法是最好的总是不使用Thread.sleep();

话虽如此,您可以采取多种选择:

. 仅每 1 分钟请求一次位置,但这可能会对电池产生奇怪的影响,因为 GPS 无线电将在非工作时间保持打开状态。

. 创建服务的 PendingIntent 并要求 AlarmManager 在 1 分钟内再次调用它。这不会让您的 GPS 一直处于开启状态(如果您的程序正确),但它需要再次定位

. 您还可以在同一服务中(无需销毁并重新启动它)使用ScheduledExecutorService每 1 分钟运行一次线程。(GPS 开或关取决于编程)

于 2013-01-11T16:17:30.747 回答
0

为什么需要线程或第二个服务来插入插入数据库的位置更新。为什么不能在 requestLocationUpdates 方法和 onLocationChanged 事件中配置每 1 分钟的 locationupdates,为什么不能直接将记录插入表中。每分钟运行第二个服务或线程可能会影响您的电池性能。我在我的一个项目中见过。

于 2013-01-11T16:13:57.777 回答