2011-10-03 16 views

Odpowiedz

10

myślę, co oznaczało było zapytać jak mogę napisać AsyncTask że nie prosi o dowolnych parametrach. Sztuką jest zdefiniowanie tego, czego oczekujesz jako parametru i wartości zwracanej w rozszerzeniu klasy: class MyClass extends AsyncTask<Void, Void, Void> na przykład nie oczekuje żadnych parametrów i nie zwraca żadnego z nich. AsyncTask<String, Void, Drawable> oczekuje na łańcuch (lub kilku strun) i wraca rozciągliwej (z własnej metody doInBackground z własnym sposobem onPostExecute)

+0

Dzięki, to bardzo pomocne. Muszę ustawić tekst na niestandardowym widoku, który zbudowałem (brak parametrów ustawionych lub zwróconych), ale jak to zrobić? –

+0

Możesz utworzyć konstruktor w klasie AsyncTask, w której przekazujesz odwołanie do widoku. Jeśli zapiszesz to w zmiennej w klasie, możesz użyć tej zmiennej, aby ustawić tekst do niej w metodzie 'onPostExecute'. Pamiętaj jednak, aby ustawić tekst w 'onPostExecute', ponieważ Android nie pozwala na zmianę interfejsu w wątku nonUI (AsyncTask), z wyjątkiem sytuacji, gdy robisz to w' onPostExecute' – Lars

19

z przykładów realizacji Async bez params i mapę bitową wynik w wyniku onPostExecute

/** 
* My Async Implementation without doInBackground params 
* 
*/ 
private class MyAsyncTask extends AsyncTask<Void, Void, Bitmap> { 

    @Override 
    protected Bitmap doInBackground(Void... params) { 

     Bitmap bitmap; 

     .... 

     return bitmap; 
    } 

    protected void onPostExecute(Bitmap bitmap) { 

     .... 
    } 
} 

W twoja aktywność, powinieneś dodać tę implementację:

MyAsyncTask myAsyncTask = new MyAsyncTask(); 
myAsyncTask.execute(); 
+0

podczas wywoływania myAsyncTask.execute, isn ' t konieczne jest dostarczenie parametrów? –

+0

Tak. W takim przypadku funkcja może być wykonywana bez parametrów. Jeśli potrzebujesz więcej informacji, skontaktuj się ze mną. –

+0

i jaki jest najlepszy sposób, aby się z Tobą skontaktować :) –