gpt4 book ai didi

android - locationListener 只被调用一次

转载 作者:行者123 更新时间:2023-11-29 18:07:33 25 4
gpt4 key购买 nike

我想每 10 秒向远程服务器发送一些数据和坐标。我想,最好的匹配是

public void onCreate( Bundle savedInstanceState ) {
//snip
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 10000, 0, new SendingLocationListener() );
}

在监听器中我有以下代码:

public void onLocationChanged( Location location ) {
if( null == location ) return;
TrackerNotifierTask task = new TrackerNotifierTask();
task.execute( location );
}

TrackerNotifierTask 在它的 doInBackground() 方法中使用了 httpclient,所以它非常简单。

现在,如果我开始 Activity ,我可以看到 onLocationChanged() 被执行并且数据成功到达远程服务器。但只有一次!无论我以后做什么,更改坐标或其他任何操作,都不会调用该任务。

这是在 android 中实现此类事情的正确方法还是我应该求助于一些 background-service

最佳答案

Shrikant 的链接给了我一些关于 LocationListener 实现的类结构的提示。

该类不一定必须定义为内部匿名类。我将其定义为内部,但命名为 one 并且它也有效。

诀窍在于,必须将监听器实例声明为字段:

private LocationListener listener;

@Override
public void onCreate( Bundle savedInstanceState ) {
//snip
locationManager = (LocationManager)this.getSystemService( Context.LOCATION_SERVICE );
listener = new MyLocationListener( SomeActivity.this );
locationManager.requestLocationUpdates( provider, 1000, 0, listener );
}

否则它将在第一次运行后被垃圾收集,如果这样定义:

locationManager.requestLocationUpdates( provider, 1000, 0, new MyLocationListener() );

这是解决方案的一半。另一部分 - 关于 minTime - 仍未解决。也许它与模拟器有关......我会在找到方法后立即发布缺失的部分。

更新:看起来,在真实设备上,无论坐标是否改变,minInterval 似乎都会触发听众

关于android - locationListener 只被调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com