Структура кода с помощью 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? Я использовал это, чтобы решить что-то подобное.

Другие вопросы по тегам