2011-01-18 24 views
62

Voglio un semplice esempio sulla creazione di thread e il richiamo di thread in Android.Esempio di threading in Android

+0

È possibile fare riferimento a questo post anche: https://stackoverflow.com/questions/9148899/ valore di ritorno da thread –

risposta

81
+7

I primi due collegamenti non funzionano. Per il primo collegamento, prova [link] (http://android-developers.blogspot.com/2009/05/painless-threading.html) Per il secondo link, prova [link] (http://developer.android.com/guide/components/processes-and-threads.html) – Dexter

+5

La risposta è quasi di 1,5 anni. Provo ad aggiornare i collegamenti. – RoflcoptrException

+0

sei davvero gentile ad aver risposto a una domanda non specifica come questa –

9

Uno dei Androids funzione molto utile è la classe AsyncTask.

Per funzionare, è necessario estenderlo e sostituirlo con doInBackground (...). doInBackground esegue automaticamente un thread di lavoro, e si può aggiungere un po ' ascoltatori sul thread dell'interfaccia utente a ricevere la notifica circa l'aggiornamento di stato, queste funzioni sono chiamato: onPreExecute(), onPostExecute() e onProgressUpdate()

è possibile trovare un esempio here.

Fare riferimento al di sotto del messaggio per le altre alternative:

Handler vs AsyncTask vs Thread

+0

.. Sono abbastanza sicuro che il tuo link sia morto. –

+0

@ While-E Ho paura che tu abbia ragione –

+2

Ho appena aggiornato il link. Il blog si è spostato in questa nuova posizione: [collegamento] (http://android-jotting.blogspot.com/2010/09/using-asynctasks-in-android.html) – slybloty

5

Ecco un semplice esempio filettatura per Android. È molto semplice ma dovrebbe aiutarti a ottenere una prospettiva.

codice di Android - Main.java

package test12.tt; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class Test12Activity extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final TextView txt1 = (TextView) findViewById(R.id.sm); 

     new Thread(new Runnable() { 
      public void run(){   
      txt1.setText("Thread!!"); 
      } 
     }).start(); 

    }  
} 

applicazioni Android xml - main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TextView 
    android:id = "@+id/sm" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"/> 

</LinearLayout> 
+36

Questo mi sembra un esempio errato, poiché un aggiornamento dell'interfaccia utente viene eseguito da un thread in background. –

+1

Se stai aggiornando il thread ui dovresti usare il gestore, perché è il livello intermedio tra il thread ui e il thread di spawn, in questo modo rimarrai al sicuro da dead lock – IamStalker

+2

https://developer.android.com/guide/components/processes -and-threads.html scoraggia esattamente questo tipo di programmazione poiché viola "Non accedere all'interfaccia utente Android toolkit dall'esterno dell'interfaccia utente" regola –