【问题标题】:requestlocationupdate minTime is not workingrequestlocationupdate minTime 不起作用
【发布时间】:2014-11-23 18:42:26
【问题描述】:

我在我的代码中使用了这一行:

locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 1, listener);

这适用于 Jellybean 设备及更高版本。我开始使用线程每 20 秒启动一次更新。这种方式对 GPS 有影响吗,因为它会一直打开和关闭它?

new Thread(new Runnable(){
                public void run() {
                    locationmanager.removeUpdates(listener);
                    try {
                        Thread.sleep(20000);
                    } catch (InterruptedException e) {
                    }
                    if(enapled)
                        runOnUiThread(new Runnable() {
                            public void run() {
                                locationmanager.requestLocationUpdates(
                                        LocationManager.GPS_PROVIDER, 0, 1, listener);
                            }
                        }); 
                }
            }).start();

这个应用程序是为长时间运行而设计的,我担心让 locationmanager 一直运行。一段时间后删除侦听器并再次请求位置是否安全?如果没有,有没有其他方法可以解决这个问题?

【问题讨论】:

  • 我不太明白你的问题在这里......
  • 在时间过去后移除监听器并再次请求位置是否安全。因为这个应用程序旨在运行很长时间 - 几天。如果他们是另一种方式?
  • 你为什么担心让它继续运行。电池?
  • 是的,电池寿命在这里很重要。

标签: android gps locationmanager


【解决方案1】:

保持注册是安全的,如果你把它放在那里或一遍又一遍地注册,它对电池没有影响。
根据我的经验,多次注册到位置经理随着时间的推移会遇到很多问题, 我会代替你做的是每隔几分钟检查一次最后收到的位置是否是在最后一分钟左右收到的。如果没有,请重新注册监听器。
顺便说一句,这么长的时间你需要 GPS 做什么?
也请查看其他位置提供商,他们可能会以较低的电池使用率来解决问题
Location Strategies

【讨论】:

  • 所以这段代码不会影响设备?我需要它来进行在线跟踪。
  • 这段代码确实违反了我之前写的内容,这意味着它确实多次注册了监听器。最好只注册一次并监控您是否按预期获得了更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多