Pasar un mensaje del hilo a la interfaz de usuario de actualización

He creado un nuevo hilo para un explorador de archivos. El hilo lee el contenido de un directorio. Lo que quiero hacer es actualizar el subproceso de interfaz de usuario para dibujar una representación gráfica de los archivos y carpetas. Sé que no puedo actualizar la interfaz de usuario desde un nuevo hilo, así que lo que quiero hacer es:

mientras que el hilo de exploración de archivos itera a través de archivos de directorios y carpetas pasan una cadena de ruta de acceso de archivo al subproceso de UI. El manejador en el hilo de interfaz de usuario a continuación, dibuja la representación gráfica del archivo pasado atrás.

public class New_Project extends Activity implements Runnable { private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { Log.d("New Thread","Proccess Complete."); Intent intent = new Intent(); setResult(RESULT_OK, intent); finish(); } }; public void fileScanner(){ //if (!XMLEFunctions.canReadExternal(this)) return; pd = ProgressDialog.show(this, "Reading Directory.", "Please Wait...", true, false); Log.d("New Thread","Called"); Thread thread = new Thread(this); thread.start(); } public void run() { Log.d("New Thread","Reading Files"); getFiles(); handler.sendEmptyMessage(0); } public void getFiles() { for (int i=0;i<=allFiles.length-1;i++){ //I WANT TO PASS THE FILE PATH BACK TU A HANDLER IN THE UI //SO IT CAN BE DRAWN. **passFilePathBackToBeDrawn(allFiles[i].toString());** } } } 

Echa un vistazo a AsyncTask para este tipo de cosas. Es realmente mucho más elegante que rodar su propio manejador y pasar mensajes de ida y vuelta.

http://developer.android.com/reference/android/os/AsyncTask.html

Parece pasar mensajes simples es int basado … Lo que necesitaba hacer era pasar un paquete

 using Message.setData(Bundle) and Message.getData(Bundle) 

Tan Feliz = 0)

 //Function From Within The Thread public void newProjectCreation() { Message msg = new Message(); Bundle bundle = new Bundle(); bundle.putString("Test", "test value"); msg.setData(bundle); handler2.sendMessage(msg); } //Handler in The UI Thread Retreieves The Data //And Can Update the GUI as Required private Handler handler2 = new Handler() { @Override public void handleMessage(Message msg) { Bundle bundle = msg.getData(); Toast.makeText(New_Project.this,bundle.getString("Test"),Toast.LENGTH_SHORT).show(); } }; 
  • ¿Cómo puedo ejecutar código en un hilo de fondo en Android?
  • Handler no entrega un mensaje o un Runnable al subproceso principal
  • Cómo evitar la señal fatal 6 (SIGABRT) en android
  • No se puede finalizar una actividad en pausa hasta que se recupera el foco
  • Descargar el archivo hace que la interfaz de usuario gague
  • Java.util.concurrent.RejectedExecutionException en Async Tarea Android
  • Android ejecuta una función en una clase en un nuevo hilo
  • Android: java.util.concurrent.ThreadPoolExecutor
  • Espere un hilo antes de continuar en Android
  • Cómo crear un hilo en Android NDK?
  • Android esperando el hilo de la interfaz de usuario
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.