2011-01-18 19 views
62

Quiero un ejemplo simple sobre la creación de subprocesos y la invocación de subprocesos en android.Ejemplo de subprocesamiento en Android

+0

Se puede hacer referencia a este post demasiado: https://stackoverflow.com/questions/9148899/ return-value-from-thread –

Respuesta

81
+7

Los primeros dos enlaces no funcionan ... Para el primer enlace, intente [link] (http://android-developers.blogspot.com/2009/05/painless-threading.html) Para el segundo enlace, pruebe [link] (http://developer.android.com/guide/components/processes-and-threads.html) – Dexter

+5

La respuesta es casi 1.5 años. Intento actualizar los enlaces. – RoflcoptrException

+0

es muy agradable haber respondido una pregunta inesperada como esta –

9

Uno de los androides potente característica es la clase AsyncTask.

Para trabajar con él, primero debe extenderlo y anular doInBackground (...). doInBackground ejecuta automáticamente en un subproceso de trabajo, y se puede añadir un poco de oyentes en el hilo de interfaz de usuario para ser notificado acerca de la actualización de estado, esas funciones son llamada: onPreExecute(), onPostExecute() y onProgressUpdate()

se puede encontrar un ejemplo here.

se refieren debajo de correos para otras alternativas:

Handler vs AsyncTask vs Thread

+0

.. Estoy bastante seguro de que su enlace está muerto. –

+0

@ While-E Me temo que tienes razón –

+2

Acabo de actualizar el enlace. El blog se ha movido a esta nueva ubicación: [link] (http://android-jotting.blogspot.com/2010/09/using-asynctasks-in-android.html) – slybloty

5

Aquí está un ejemplo simple de enhebrado para Android. Es muy básico, pero debería ayudarte a obtener una perspectiva.

código de 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(); 

    }  
} 

aplicación 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

Esto me parece un ejemplo incorrecto, ya que una actualización de la interfaz de usuario se está realizando desde un hilo de fondo. –

+1

Si está actualizando un hilo ui, debe usar el manejador, porque es la capa intermedia entre el hilo ui y su hilo de generación, de esta forma se mantendrá a salvo del bloqueo – IamStalker

+2

https://developer.android.com/guide/components/processes -and-threads.html desaconseja exactamente este tipo de programación ya que viola la regla "No acceder al juego de herramientas de la interfaz de usuario de Android desde fuera de la interfaz de usuario" –