, 당신은 doInBackground 및 publishProgress()를 사용하는 방법을 문의 onProgressUpdate 의 말에 doInBackgrnd
`if(!_publishFinish)
{Thread.Sleep(200);}`
에 바쁜 대기를 할 진전을 게시 전화 나는 아직도 뭔가 잘못이지만, 메소드 코드 getData()이 필요합니다.
doInBackground 방법은 이벤트 스레드가 아닌 다른 스레드에서 실행해야 할 몇 가지 작업을 수행하는 데 사용되어야하고, publishProgress 방법, 당신은 이벤트 스레드와 함께 작동 작업을 실행해야합니다. 그러므로 getData()이 이벤트 스레드와 아무런 관련이 없다면 코드 doInBackground에 코드를 작성하십시오. 요구 사항은 단지 이러한 방법으로 현재를 모두 사용하는 경우
그러나, 당신은 아래 등과 같은 동기화 블록을 추가 할 수 있습니다
private class MyTask extends AsyncTask<String, Void, List<Data>> {
private volatile UserData userData;
protected List<Data> doInBackground(String... params) {
synchronize(userData)
{
// do some job 1
publishProgress();
// wait until the progress finish to update variable.
if(userData!= null){
//do some job 2
}
//do some job 3
}
}
protected void onProgressUpdate(Void... values) {
// try to ask user and collect information
synchronize(userData)
{
userData= getData();
}
}
}
기다리고 알림을 사용하면 그게 무엇인지 알 수 있습니다. – njzk2