runOnUiThread를 사용하여 Android에서 문제가 발생했습니다. 잠시 동안 기다리는 AsyncTask (Activity 내부)를 시작한 후 메소드 showDialog (id)를 호출합니다. 이 호출 후, 다른 동안 sleep하고, 메소드 dismissDialog (id)를 호출하는 것을 끝낸다.UI를 플러시하는 방법 실행을 계속하기 전에 스레드 액션
public class MyActivity extends Activity {
...
protected class StartWaiting extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Show dialog
runOnUiThread(new Runnable() {
@Override
public void run() {
showDialog(PROGRESS_DIALOG_LOADING);
}
});
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Dismiss dialog
runOnUiThread(new Runnable() {
@Override
public void run() {
dismissDialog(PROGRESS_DIALOG_LOADING);
}
});
return null;
}
@Override
protected void onPostExecute(Void arg) {
new StartServices().execute();
}
}
}
불행하게도, 행동이 내가 원하는 것과 다른 :
이
코드입니다 즉시 차례로이라고 ShowDialog를()와 dismissDialog().나는 이것이 일어나는 이유는 UI 스레드가 "수있는 경우", 즉 수면 동작의 끝에서 두 가지 동작을 모두 실행한다고 생각합니다.
음, 스레드 (이 경우 UI 스레드)가 계속하기 전에 모든 동작을 실행하도록하는 "flushUI()"메서드가 있습니까?
어떻게 당신이 AsyncTask를 실행합니까? –
새로운 StartWaiting(). execute(); –