我在onLocationChanged方法中做了很多工作,我想锁定方法,直到所有工作都完成,即使位置管理器达到了它的条件。
例如我有以下代码:
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(),即使任务没有完成。
请有人帮助我。
答案 0 :(得分:2)
如果您确定在完成之前调用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;
}
}
}
}