2010-12-02 17 views
5

Soy un n00b Android tan desnudo conmigo.Cómo pasar datos de la clase de subprocesos por separado a la actividad en Android

Estoy tratando de analizar audio usando AudioRecord en una clase. Mi problema es que no tengo idea de si la ruta que voy a intentar e insertarla en un proceso separado es correcta. Lo que quiero hacer es escuchar a ese proceso en el hilo de la interfaz de usuario principal y seguir actualizando un cuadro de texto basado en los datos en el hilo.

Esto es lo que tengo hasta ahora:

//RecordActivity.java 
[...] 
public class RecordActivity extends Activity { 
    final Handler mHandler = new Handler(); 
    final Runnable mUpdateResults = new Runnable() { 
     public void run() { 
      updateResultsInUi(); 
     } 
    }; 
    RecordThread t = new RecordThread(); 

private OnClickListener mClickListener = new OnClickListener() { 

    public void onClick(View v) { 
    t.start(); 

    } 
} 

//RecordThread.java 
public class RecorderThread extends Thread { 
[...] 

@Override 
public void run() { 
[...audio process code...] 
} 

¿Hay una manera de enviar de vuelta los datos de mi clase RecordThread a la clase RecordActivity? ¿Hay alguna forma de conectar el controlador usando 2 archivos .java diferentes?

Además, ¿es esta la forma correcta de hacerlo? ¿Debería usar AsyncTask en su lugar?

Respuesta

4

Pase su mHandler como parámetro al constructor de ustedes RecordThread clase, y utilizar mHandler.obtainMessage(...).sendToTarget() para pasar los datos a la clase Actividad

En la clase RecordActivity, declarar y utilizar el controlador como:

private final Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
    } 

Entonces depende de cómo llamó a la obtención de mensaje(), si utilizó, por ejemplo, obtainMessage(int what, int arg1, int arg2) puede acceder a ellos mediante msg.what, msg.arg1 y msg.arg2.

0

Recomendaría echarle un vistazo al Android fundamentals. Le brinda una buena visión general de los componentes clave de la aplicación dentro de Android. Creo que esta es una lectura obligada para cualquiera que comience con Android.

Un servicio puede ser lo que necesita.

Tenga en cuenta que los servicios se ejecutan en el hilo principal, por lo que, al ejecutar operaciones costosas, es posible que desee realizar el pago Handling Expensive Operations in the UI Thread.

+4

Aunque estoy de acuerdo con la recomendación, no creo que responda a nada en la naturaleza de la pregunta aquí. Esa página no trata los hilos, ni la transmisión de mensajes, excepto en los términos más vagos y generales. – mikebabcock

Cuestiones relacionadas