Im은 Fragment의 AsyncTask에서 this 문서에 설명 된 html 페이지를 다운로드하고 구문 분석하는 방법을 사용합니다. 에뮬레이터에서는 모든 것이 잘 작동하지만 내 갤럭시 S2에서 시도했습니다. 내 장치를 돌리면 목록보기가 새로 고쳐지지 않으며 장치를 다시 돌리면 새로 고쳐집니다. 여기 AsyncTask in Fragment
내가에서 onCreate 내 조각을 사용하는 방법의 코드 (LinksDownloader - HTML 구문 분석 클래스) 당신은 그것을 위해 콜백 인터페이스를 만들 수 있습니다public class DownloadLinksTaskFragment extends Fragment {
static interface TaskCallbacks {
void onPreExecute();
void onPostExecute(Byte mssg);
}
private TaskCallbacks mCallbacks;
private DownloadLinksTask mTask;
public LinksDownloader linksDownloader;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mCallbacks = (TaskCallbacks) activity;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public void onDetach() {
super.onDetach();
mCallbacks = null;
}
public void execute() {
mTask = new DownloadLinksTask();
mTask.execute();
}
private class DownloadLinksTask extends AsyncTask<Void, Void, Byte> {
@Override
protected void onPreExecute() {
if (mCallbacks != null) {
mCallbacks.onPreExecute();
}
}
@Override
protected void onPostExecute(Byte b) {
if (mCallbacks != null) {
mCallbacks.onPostExecute(b);
}
}
@Override
protected Byte doInBackground(Void... v) {
byte exceptionType = 0;
try {
linksDownloader.download();
} catch (HttpStatusException e) {
exceptionType = 1;
} catch (WrongContentException e) {
exceptionType = 2;
} catch (ConnectTimeoutException e) {
exceptionType = 3;
} catch (SocketTimeoutException e) {
exceptionType = 3;
} catch (UnknownHostException e) {
exceptionType = 3;
} catch (IOException e) {
exceptionType = 4;
} catch (Exception e) {
exceptionType = 5;
}
return exceptionType;
}
}
}