我有一个notifyDataSetChanged函数,我需要在该方法中接收位置更改,并在我收到这些更改后执行另一个方法。 问题是,我必须给android一个locationlistener并让服务找到gps位置,然后调用我的监听器函数。我需要在notifyDataSetChanged中发生所有这些。
我的方法:
@Override
public void onDataSetChanged() {
Log.i(Constants.LOG_TAG, "entering notifyDataSetChanged()");
try {
semaphore.acquire();
Looper.prepare();
Log.i(Constants.LOG_TAG, "requesting GPS updates..");
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.i(Constants.LOG_TAG, "got a location: " + location.getLatitude() + ", " + location.getLongitude());
locationManager.removeUpdates(this);
loadData(location);
semaphore.release();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
Looper.loop();
//Wait for loadData to finish after i got the location
semaphore.acquire();
semaphore.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(Constants.LOG_TAG, "exiting notifyDataSetChanged()");
}
然而"退出notifyDataSetChanged()"永远不会......
有什么想法吗?
祝你好运 约翰