2011-10-03 15 views

risposta

10

penso che ciò che si intende chiedere era come faccio a scrivere un AsyncTask che non chiede per tutti i parametri. Il trucco è definire ciò che si prevede di utilizzare come parametro e restituire il valore nell'estensione della classe: class MyClass extends AsyncTask<Void, Void, Void> ad esempio non prevede alcun parametro e non restituisce nessuno dei due. AsyncTask<String, Void, Drawable> prevede una stringa (o più stringhe) e restituisce una Drawable (dalla propria doInBackground metodo per il proprio onPostExecute metodo)

+0

Grazie, è molto utile. Ho bisogno di impostare del testo su una vista personalizzata che ho creato, (nessun parametro impostato o restituito), ma come faccio? –

+0

È possibile creare un costruttore nella classe AsyncTask in cui si passa un riferimento alla vista. Se lo salvi in ​​una variabile della classe, puoi usare quella variabile per impostare del testo nel metodo 'onPostExecute'. Assicurati di impostare il testo in 'onPostExecute', perché Android non ti permette di cambiare l'interfaccia utente in un thread nonUI (il tuo AsyncTask), tranne quando lo fai in' onPostExecute' – Lars

19

attuazione Esempio asincrono senza params e risultato bitmap in seguito 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) { 

     .... 
    } 
} 

In la tua attività, dovresti aggiungere questa implementazione:

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

mentre chiami myAsyncTask.execute, isn ' è necessario fornire i parametri ?? –

+0

Sì. In quel caso la funzione può essere eseguita senza parametri. Se hai bisogno di maggiori informazioni per favore contattami. –

+0

e qual è il modo migliore per contattarti :) –

Problemi correlati