Структура кода с помощью Asynctask Android
Я предполагаю, что я просто делаю "Спагетти-код". Perhabs, некоторые эксперты могут помочь мне написать лучший код для моего решения. Следующие псевдокоды покажут мою проблему:
У меня есть некоторые процедуры, которые работают долго. Эта процедура покажет индикатор выполнения. Я использую Asynctasks для достижения этой цели. Это все работает нормально, но мой код больше не поддерживается:
Мое желание оставить простой код без вложенности кода:
public void onCreate(Bundle savedInstanceState) {
LongrunningTask1();
dosomething1();
LongrunningTask2();
dosomething2();
LongrunningTask3();
dosomething3();
LongrunningTask4();
dosomething4();
}
Мой код с Asynctasks:
public void onCreate(Bundle savedInstanceState) {
new LongrunningTask1().execute("Task1");
}
class LongrunningTask1 extends AsyncTask<String, Void, boolean> {
private Exception exception;
protected RSSFeed doInBackground(String... urls) {
try {
Do;
return true;
} catch (Exception e) {
return null;
}
}
protected void onProgressUpdate(Void... values) {
updateprogressbar();
}
protected void onPostExecute(RSSFeed feed) {
dosomething1();
new LongrunningTask2().execute("Task2");
}
}
class LongrunningTask2 extends AsyncTask<String, Void, boolean> {
similar to LongrunningTask1
protected void onPostExecute(RSSFeed feed) {
dosomething2();
new LongrunningTask3().execute("Task3");
}
}
class LongrunningTask3 extends AsyncTask<String, Void, boolean> {
similar to LongrunningTask2
protected void onPostExecute(RSSFeed feed) {
dosomething3();
new LongrunningTask4().execute("Task4");
}
}
class LongrunningTask4 extends AsyncTask<String, Void, boolean> {
similar to LongrunningTask3
protected void onPostExecute(RSSFeed feed) {
dosomething4();
}
}
Я хотел бы избежать любых вложенных звонков. Может кто-нибудь мне помочь?
С уважением
1 ответ
Почему вы хотите выполнить их все в отдельных потоках? Вы можете сделать их все в одной AsyncTask.
Может быть, вы могли бы взять взять в ThreadPoolExecutor? Я использовал это, чтобы решить что-то подобное.