비동기 작업이 시작되기 전에 "로드 중"대화 상자를 표시하려고합니다. 다음 코드를 사용하면 모든 비동기 작업이 자신의 작업을 완료 할 때까지 대화 상자가 표시되지 않습니다. 대화 상자에는 결국에만 메시지가 표시됩니다. 나는 "로드로 사용자에게 메시지를 표시 할 그 이유는, 내가 레이아웃을 볼 수있어 때까지 그것을 10 초처럼 소요asynctask 전에 대화 표시
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
loadMap();
progressBar = ProgressDialog.show(Map.this, "",
"Loading. Please wait...", true);
//firing the asynctask here
}
AsyncTask를 꽤 무거운 작업을하고있다 : 여기
코드입니다 "대화 상자. 그러나 사용자는 어떤 이유로 asynctask 조작이 끝난 후에 만이를 볼 수 있습니다.어떻게해야합니까?
편집 : onProgressUpdate에서 일부 UI 작업 (맵뷰에 오버레이 추가)을하고 있음을 잊어 버리십시오. 그것이 UI가 아마 얼어 붙는 이유입니다. 하지만 로딩 대화 상자를 표시하는 방법을 알고 싶습니다. "로딩"대화 상자가 표시되면 UI가 정지되는지 상관하지 않습니다. 사실 나는 상관하지만 더 나은 해결책이 있는지 나는 모른다.
EDIT2 : loadmap 기능 :
public void loadMap()
{
mapView = (TapControlledMapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
mapController.animateTo(new GeoPoint((int)(47.975 * 1E6), (int)(17.056 * 1E6)));
mapView.setOnSingleTapListener(new OnSingleTapListener() {
@Override
public boolean onSingleTap(MotionEvent e) {
itemizedOverlay.hideAllBalloons();
return true;
}
});
myLocationOverlay = new FixedMyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
mapView.invalidate();
zoomToMyLocation();
editText = (EditText)findViewById(R.id.search);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus)
onSearchRequested();
EditText editText = (EditText)v;
editText.clearFocus();
}
});
}
()는 당신의'AsyncTask'의'방식을'onPreExecute에서 진행 표시 줄을 표시하고,'onPostExecute()'나는 이미 그것을 시도했습니다 @SiddharthLele 방법 –
네, 동의 @SiddharthLele – moDev
, 내가 가진 어떤에서 기각하지 왜 모든 작업이 asynctask 스레드에 있더라도 UI가 멈추는 이유. – idish