Jakie argumenty są przekazywane do AsyncTask?

Nie rozumiem co mam tu wrzucać i gdzie kończą się te argumenty? Co dokładnie powinienem umieścić i gdzie dokładnie to pójdzie? Czy muszę zawrzeć wszystkie 3 Czy mogę zawrzeć 1,2,20?

Author: Ganapathy C, 2011-05-19

4 answers

Dokumentacja Google Android mówi, że:

Zadanie asynchroniczne jest zdefiniowane przez 3 typy ogólne, zwane Params, Progress i Result oraz 4 kroki, nazwane onPreExecute, doinbackground, onProgressUpdate i onPostExecute.

AsyncTask ' s generic types:

Trzy typy używane przez zadanie asynchroniczne są następujące:

Params, the type of the parameters sent to the task upon execution.
Progress, the type of the progress units published during the background computation.
Result, the type of the result of the background computation.

Nie wszystkie typy są zawsze używane przez zadanie asynchroniczne. Aby oznaczyć Typ jako nieużywany, po prostu użyj typu Void:

 private class MyTask extends AsyncTask<Void, Void, Void> { ... }

Możesz odnieść się dalej: http://developer.android.com/reference/android/os/AsyncTask.html

Możesz też wyczyścić rolę AsyncTask, odwołując się do bloga Sankar-Ganesha

Cóż struktura typowej klasy AsyncTask wygląda następująco:

private class MyTask extends AsyncTask<X, Y, Z>

    protected void onPreExecute(){

    }

Ta metoda jest wykonywana przed rozpoczęciem nowego wątku. Nie ma wartości wejściowych/wyjściowych, więc po prostu zainicjuj zmienne lub cokolwiek, co uważasz, że potrzebujesz zrób.

    protected Z doInBackground(X...x){

    }

Najważniejsza metoda w klasie AsyncTask. Musisz umieścić tutaj wszystkie rzeczy, które chcesz zrobić w tle, w innym wątku niż główny. Tutaj mamy jako wartość wejściową tablicę obiektów typu " X " (czy widzisz w nagłówku? Mamy "...extends AsyncTask" są to typy parametrów wejściowych) i zwraca obiekt typu "Z".

   protected void onProgressUpdate(Y y){

   }

Metoda ta jest wywoływana przy użyciu metody publishProgress (y) i jest zwykle używana gdy chcesz pokazać postęp lub informacje na ekranie głównym, na przykład pasek postępu pokazujący postęp operacji, którą wykonujesz w tle.

  protected void onPostExecute(Z z){

  }

Ta metoda jest wywoływana po wykonaniu operacji w tle. Jako parametr wejściowy otrzymasz parametr wyjściowy metody doInBackground.

A co z typami X, Y i Z?

Jak można wywnioskować z powyższej struktury:

 X – The type of the input variables value you want to set to the background process. This can be an array of objects.

 Y – The type of the objects you are going to enter in the onProgressUpdate method.

 Z – The type of the result from the operations you have done in the background process.

Jak nazywamy to zadanie z zajęć z zewnątrz? Tylko z następującymi dwoma linijkami:

MyTask myTask = new MyTask();

myTask.execute(x);

Gdzie x jest parametrem wejściowym typu X.

Gdy nasze zadanie zostanie uruchomione, możemy dowiedzieć się o jego statusie z "zewnątrz". Używając metody " getStatus ()".

 myTask.getStatus();

I możemy otrzymać następujący status:

RUNNING - wskazuje, że zadanie jest uruchomione.

Oczekujące - oznacza, że zadanie nie zostało jeszcze wykonane.

Zakończone - Wskazuje, że onPostExecute(Z) został zakończony.

Wskazówki dotyczące korzystania z AsyncTask

  1. Nie wywołaj metod onPreExecute, doinbackground i onPostExecute ręcznie. Odbywa się to automatycznie przez system.

  2. Nie można wywołać Asynktasku wewnątrz innej Asynktasku lub wątku. Wywołanie metody execute musi być wykonane w wątku interfejsu użytkownika.

  3. Metoda onPostExecute jest wykonywana w wątku UI (tutaj można zadzwoń do innej AsyncTask!).

  4. Parametry wejściowe zadania mogą być tablicą obiektów, w ten sposób możesz umieścić dowolne obiekty i typy, które chcesz.

 434
Author: Kartik Domadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-19 04:52:07

Jestem za późno na imprezę, ale pomyślałem, że to może komuś pomóc.

 37
Author: mrid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-30 11:24:21

Zobacz następujące linki:

  1. http://developer.android.com/reference/android/os/AsyncTask.html
  2. http://labs.makemachine.net/2010/05/android-asynctask-example/

Nie możesz przekazać więcej niż trzech argumentów, jeśli chcesz przekazać tylko jeden argument, użyj void dla pozostałych dwóch argumentów.

1. private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> 


2. protected class InitTask extends AsyncTask<Context, Integer, Integer>

Zadanie asynchroniczne jest definiowane przez obliczenia, które są uruchamiane w wątku tła i których wynik jest publikowany w wątku interfejsu użytkownika. Na zadanie asynchroniczne jest zdefiniowane przez 3 typy generyczne o nazwie Params, Progress i Result oraz 4 kroki o nazwie onPreExecute, doinbackground, onProgressUpdate i onPostExecute.

KPBird

 4
Author: Ketan Parmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-20 21:22:35
  • W skrócie, w Asynctasku są 3 parametry

    1. Parametry do wprowadzania w DoInBackground (String... params)

    2. Parametry wyświetlania stanu postępu użyj w OnProgressUpdate (String... status)

    3. Parametry dla wyniku zastosowania w OnPostExcute (String... wynik)

    Uwaga: - [Rodzaj parametrów może się różnić w zależności od wymagań]

 3
Author: Chinki Sai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-23 12:39:55