Задать вопрос
@Mrfors
Учусь в НМетАУ на кафедре ИТС. Изучаю Java.

Как запустить два AsyncTask одновременно так, чтобы они работали одновременно?

Есть такая вот тестовая программа:
package codeasylum.ua.testasynctask;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import java.util.concurrent.TimeUnit;

public class MainActivity extends AppCompatActivity {

    TextView tv1,tv2;
    int i,k;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1 = (TextView) findViewById(R.id.task1);
        tv2 = (TextView) findViewById(R.id.task2);
        i =0;
        k = 0;
    }


    public void Start(View view) {
        new Task1().execute();
        new Task2().execute();
    }

    class Task1 extends AsyncTask<Void,Integer,Void>{

        @Override
        protected Void doInBackground(Void... voids) {
            int s = 0;
            while (s < 20){
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                s++;
                i++;
                publishProgress(i);
            }
            return null;
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values[0]);
            tv1.setText(values[0]+"");
        }
    }
    class Task2 extends AsyncTask<Void,Integer,Void>{

        @Override
        protected Void doInBackground(Void... voids) {
                int s = 0;
                while (s < 20){
                    s++;
                    k+=2;
                    publishProgress(k);
                }

            return null;
        }
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values[0]);
            tv2.setText(values[0]+"");
        }
    }
}


В ней я пытаюсь сделать так, чтоб два AsyncTask работали одновременно. Т.е. хочу, чтоб числа в TextView обновлялись одновременно. Как с помощью AsyncTask этого добиться? Возможно ли это вообще? Такое получалось сделать только через нативные потоки Java, когда для каждой задачи я создавал отдельный поток.
  • Вопрос задан
  • 283 просмотра
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
eastywest
@eastywest
Backend developer
Возможно AsyncTaskCompat - это то, что Вам нужно.
Ответ написан
@aol-nnov
если назвать вещи своими именами, то ответ найдется сам собой.
переводим с русского на русский:
Как запустить два AsyncTask так, чтобы они работали синхронно.
открываем любимый поисковик, клац-клац, ииии... опа!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы