Po ASyncTask.execute () wykonaj x () z Activity

To nie jestem pewien, jak się do tego zabrać. Zasadniczo mam klasę ASyncTask, która w tle działa jak zwykle. Chciałbym coś zrobić po zakończeniu. Zanim przejdziesz dalej i powiesz „po prostu użyj onPostExecute ()”, tam jest haczyk. Metoda, której potrzebuję, jest w działaniu, a nie w klasie Task.

Sposób, w jaki to widzę, mam 2 opcje.

ZA:
<code>    CustomTask task = new CustomTask();
    task.execute(passedParams);
            //when(task.execute is finished)
            {
                doX();
            }
</code>

Mam nadzieję, że mogę to zrobić w ten sposób, jak to jest tak proste i pozwala mi sprawdzić, kiedy zadanie jest zakończone, bez konieczności ciągłego sondowania go pod kątem aktywności i getStatus () w działaniu. Nie sądzę, żebym miał to szczęście, ale jeśli ktoś ma sposób to zrobić, byłoby świetnie

B:

Przekaż aktywność jako najważniejszy element do ASyncTask. Jest to bałagan i nie jestem zadowolony z używania go, ale poza tym i odniesieniem do obiektu, nie wiem, czy to zadziała

<code>    CustomTask task = new CustomTask();
    task.execute(passedParams,MyActivity);
</code>

Następnie w Tasks onPostExecute mogę po prostu wywołać MyActivity.doX ();

DO:

Trzecim sposobem byłoby uczynienie asynctask prywatną klasą w samym działaniu, ale naprawdę chciałbym, żeby była oddzielona. Odmiana i co nie -

Jakieś myśli na ten temat?

Podsumowując, trzeba zrobić doX () po zakończeniu zadania.execute. Wszelkie pomysły doceniane.

RE:

Ok, wiem, że tu jestem. Ciągle wymyślam nowe rozwiązania. Metoda klasowa lub metoda statyczna, którą można wywołać z dowolnego miejsca.

<code>public class ProfileSettings extends Activity
{
      public static void doX()
      {
          //Logic...
      }
}
</code>

Z AsyncTask

<code>MyActivity.doX();
</code>

questionAnswers(4)

yourAnswerToTheQuestion