два разных метода AsyncTask ждут друг друга - PullRequest
0 голосов
/ 08 октября 2019

Я не знаю, как определить проблему.

У меня есть два метода AsyncTask. doAreYouStanding и StartTimeout, когда я запускаю оба в MainActivity

, если StartTimeout в, если я жду 10 секунд, другой метод ожидает.

Почему этот поток startTimeout приостанавливает мой другой метод?

doAreYouStanding в doInBackground работает после ожидания onPreExecute в течение 10 секунд

    new doPopup().execute((Void) null);
    // new StartTimeout().execute((Void) null);




    private class doAreYouStanding extends AsyncTask<Object, Object, Void> {
        @Override
        protected void onPreExecute() {
            Log.e("YHACKUP", "onPreExecute");
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Object... objects) {
            Log.e("YHACKUP", "doInBackground");
            return null;
        }
    }


    private class StartTimeout extends AsyncTask<Object, Object, Void> {
        @Override
        protected void onPostExecute(Void aVoid) {
            if (!(ActivitySplash.this).isFinishing()) {
                layout_timeout.setVisibility(View.VISIBLE);
            }
            super.onPostExecute(aVoid);
        }

        @Override
        protected Void doInBackground(Object... objects) {
//            try {
//                Thread.sleep(10000);
//            } catch (Exception e) {
//            }
            return null;
        }
    }

Извините, если мой английский плохой

1 Ответ

0 голосов
/ 10 октября 2019

По умолчанию асинхронные задачи выполняются последовательно. Таким образом Intil, первый asyncTask завершается, второй asyntask не будет запущен. Чтобы запустить paelelly, используйте метод executeOnExecutor

 new doPopup().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
...