我有一个生成用户位置的服务。 我还得到了一个带有服务实例的线程,该线程从服务获取位置并将其发送到数据库。 线程 hibernate 1 分钟,并再次向服务请求地址并将其发送到数据库。
我的问题是我应该创建一个服务来代替这个线程,并且第二个服务将每 1 分钟启动一次? 优点是当他不需要喜欢该线程时服务不会运行,但缺点是我必须每 1 分钟创建一个新连接。
什么是更好的?谁的效率更高?
最佳答案
我通常认为最好的办法就是不要使用 Thread.sleep();
也就是说,您可以采取以下几种选择:
。每 1 分钟请求一次位置,但这可能会对电池产生奇怪的影响,因为 GPS radio 在非工作时间期间将保持打开状态。
。创建您的服务的 PendingIntent 并要求 AlarmManager 在 1 分钟内再次调用它。这不会让您的 GPS 始终保持开启状态(如果您的程序正确),但需要再次修复位置
。您还可以在同一服务中(无需销毁并重新启动它)使用 ScheduledExecutorService每 1 分钟运行一次线程。 (GPS 打开或关闭取决于编程)
关于java - 服务效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282064/