Android 确保所有任务都在onLocationChanged方法中执行
我在onLocationChanged方法中做了很多工作,我想锁定该方法,直到所有工作都完成,即使位置管理器达到它的条件 例如,我有以下代码:Android 确保所有任务都在onLocationChanged方法中执行,android,locationmanager,locationlistener,Android,Locationmanager,Locationlistener,我在onLocationChanged方法中做了很多工作,我想锁定该方法,直到所有工作都完成,即使位置管理器达到它的条件 例如,我有以下代码: private LocationManager _locMgr; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acti
private LocationManager _locMgr;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
_locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 2, this);
}
public void onLocationChanged(Location location) {
//do alot of job
}
我面临的问题是,如果locationManager中的时间大于2秒且大于2米,则即使没有完成任务,它也会执行onLocationChanged()
请有人帮我解决这个问题。如果您确定在完成之前调用了onLocationChanged(),请尝试以下操作: 声明一个活动字段
private bolean isAllDone=true代码>
声明一个锁对象private final object lock=new object()代码>
然后在onLocationChange测试它:
public void onLocationChanged(Location location) {
if(isAllDone){
synchronized (lock){
if(isAllDone){
isAllDone = false;
//do alot of job
isAllDone = true;
}
}
}
}
只需更改米数和秒数?@user251182我尝试过这样做,但我不知道在onLocationChanged()中执行所有任务所需的确切时间,因此如果我知道确切时间,我将根据时间更改米数和秒数!谢谢你,雷马尔,我还没试过,但我有个问题。。这是否可以确保即使再次调用onLocationChanged()方法,也能完成所有任务?好的,我已经阅读了有关synchronized的内容,它肯定能完成任务:))非常感谢您的帮助,非常感谢。