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>