Programación de hilos
La clase pública HandlerDemoActivity extiende Activity para implementar OnClickListener {
Botón btn1, btn2
ProgressBar ProgressBar
actualizar controlador de datos controlador de datos actualizado; p >
HandlerThread handlerThread
/** Se llama cuando se crea la actividad por primera vez. */
@Override
public void on create(Estado de instancia guardado del paquete){
super oncreate(savedInstanceState);
setContentView. (r . diseño . principal);
BTN 1 =(Botón)findViewById(r . id . BTN 1);
Bt N2 =(Botón)findViewById(r . id . Bt N2);
barra de progreso =(barra de progreso)findViewById(r . id . barra de progreso 1
btn1.setOnClickListener(this); Bt N2. setonclicklistener(this);
}
/**
* Personaliza una clase para heredar la clase Handler y anular la función handleMessage.
*Y requiere un constructor con un objeto Looper.
*Bucle para detectar si hay algún mensaje. Si hay un mensaje, se llamará a handleMessage para recuperar los datos.
*Si no hay ningún mensaje, ingresa al estado de espera.
* @authoradmin
*
*/
Controlador de extensión Class UpdateDataHandler {
controlador de datos de actualización pública (Looper Looper){
Super(looper);
}
@override
public void handleMessage(Mensaje de mensaje) {
super .manejar mensaje(msg);
sistema . println("-" hilo. hilo actual(). getId()); bar .set Progress(msg .arg 1); //Obtener datos de la cola de mensajes y actualizar el control.
updatedatahandler . post(print runnable);
}
}
runnable print runnable = newrunnable(){//Implementar uno Clase de hilo.
int I = 0;
@override
Public void run() {// Reescribe la función de ejecución en la clase de subproceso.
I = 20;
mensaje msg = controlador de datos actualizado. obtener mensaje(); //Obtener el objeto de mensaje del controlador.
msg .arg 1 = I; //Colocar datos en el objeto de mensaje.
//msg . obj = obj; //También se pueden enviar algunos objetos.
//msg . setdata(); //Puedes enviar un objeto Bundle.
Pruebe {
thread . sleep(1000); // Pausa durante 1 segundo
} catch (InterruptedException e) {
e . printstacktrace();
}
system out . , La operación finaliza.
{
updatedatahandler . remove callbacks(print runnable); // Libera la clase de hilo del controlador
Return;
//msg . sendtotarget(); //Esta función también se puede utilizar para enviar mensajes.
actualizar controlador de datos. sendmessage(msg); //Coloca el objeto de mensaje en la cola de mensajes.
}
};
@override
public void onClick(ver v) {
if( v == btn1)
{
handler thread = new handler thread(" "); // HandlerThread es un hilo y hereda de Thread. Contiene una referencia a la instancia de Looper.
handler thread . start(); //Asegúrate de llamar a la función de inicio del hilo.
controlador de datos actualizados = nuevo controlador de datos actualizado(hilo del controlador. get looper());
controlador de datos actualizados.
System.out.println; ("Hilo principal" Thread.currentThread().getId());
}
}
}