Есть ли эффективный способ передать массив в asyncTask? - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть функция, выполнение которой занимает некоторое время. в настоящее время я запускаю его внутри потока, потому что я не могу заставить работать AsyncTask. мне нужно передать переменную double [] в качестве входных данных в doInBackground, затем он должен вернуть результат, который также является переменной double [], в onPostExecute, где результат будет напечатан в textView.
это выглядит так просто:

public class finder extends AsyncTask <Double , Void , Double> {
    double[] input;
    double[] result;

    public finder() {
        super();
    }


    @Override
    protected double[] doInBackground(Double... params) {

        result = foo(input)

        return result;
    }


    protected void onPostExecute(Double... params) {


    }

public double[] foo (double [] input){...}
}

поэтому у меня есть несколько вопросов:

1- Какая конфигурация аргументов для класса и каждого метода может выполнять эту работу?
2-Нужно ли переопределить методы? (когда я изменяю спецификатор doInBackground на double [], это дает мне ошибку при @Override)
3 - каким должен быть каждый спецификатор методов?
4 - как я могу заставить onPostExecute распознавать textView? что нужно передать asyncTask?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

ну, похоже, что создание класса с двумя членами типа double [] и передача класса в качестве аргумента AsyncTask и возвращаемого типа doInBackground решит проблему.

class mTest {

     double[] testresult;
     double [] testinput;


}

и:

private class myAsync extends AsyncTask<mTest, Void , mTest>{


        mTest localmtest = new mTest();

        @Override
        protected mTest doInBackground(mTest...pp) {
            localmtest = pp[0];
            localmtest.testresult = foo(localmtest.testinput);

            return localmtest;
        }

        @Override
        protected void onPostExecute(mTest ppp) {

            outputset(ppp.testresult);
            //outputset sets some TextView text

        }


    }

Спасибо @Tien hT за помощь.

0 голосов
/ 10 февраля 2020

На ваш вопрос ответили по ссылке ниже. Я думаю, что это поможет вам. Спасибо Какие аргументы передаются в AsyncTask

...