服务效率

时间:2013-01-11 16:09:41

标签: java android multithreading service

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

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

什么更好?谁更有效率?

2 个答案:

答案 0 :(得分:2)

我通常是从一种思想来说,最好总是不使用Thread.sleep();

说,你可以采取几种方法:

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

。创建服务的PendingIntent并要求AlarmManager在1分钟内再次调用它。这不会一直保持你的GPS(如果你正确的程序),但它需要再次修复位置

。你也可以在相同的服务中(不破坏和重新启动)使用ScheduledExecutorService每1分钟运行一次。 (GPS ON或OFF取决于编程)

答案 1 :(得分:0)

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