내 Android 앱에는 서로 의존하는 최대 4 개의 비동기 작업이 있습니다. 즉, 하나의 작업이 완료되어야 다음 작업이 검색된 데이터로 진행될 수 있습니다.중첩 된 AsyncTasks를 사용하는 가장 좋은 방법은 무엇입니까?
final AsyncTask<Void, Void, Boolean> taskOne = new AsyncTask<Void, Void, Boolean>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(Void... params) {
// retrieve required data
return true;
}
@Override
protected void onPostExecute(Boolean success) {
if (success) {
// start second task here
final AsyncTask<Void, Void, Boolean> taskTwo = new AsyncTask<Void, Void, Boolean>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(Void... params) {
// retrieve required data
return true;
}
protected void onPostExecute(Boolean success) {
if (success) {
// start third task here
final AsyncTask<Void, Void, Boolean> taskThree = new AsyncTask<Void, Void, Boolean>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(Void... params) {
// retrieve required data
return true;
}
protected void onPostExecute(Boolean success) {
if (success) {
// and so on ...
}
}
}
taskThree.execute();
}
}
}
taskTwo.execute();
}
}
}
taskOne.execute();
은 무엇보다 읽을 수있는 코드로이 동작을 달성하기 위해 가장 좋은 방법이 될 것입니다 : 코드 이런 식으로 뭔가를 찾을 때 지금이 어떤 점에서 매우 불분명 할 수 있는가?
미리 감사드립니다.
세 개의 클래스를 만들고 onPostExecute()에서 new TaskTwo()와 같은 다른 클래스를 호출하면됩니다. execute() – Kuls
하나의 클래스 만 사용할 수도 있지만 이전 응답에 따라 다른 클래스를 건설자. – jorjSB
이런 식으로'RxJava'를 사용할 것을 권한다. –