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.
- Android- Thread.join () hace que la aplicación se bloquee
- CancelaciónExcepción al utilizar ExecutorService
- RxAndroid: cambios de interfaz de usuario en el subproceso Schedulers.io ()
- Nuevo hilo varias veces
- Android.os.networkonmainthreadexception dentro de un nuevo Thread
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());** } } }
- Android: AsyncTask OR normal Java threads con ExecutorService
- ¿Por qué run () es llamado una sola vez?
- Nuevo Runnable () pero no nuevo hilo?
- ¿Aplicación de hilo único utilizar multi núcleo en android?
- Cómo actualizar la vista de imagen inmediatamente
- Obtener referencia a Thread Object desde su ID
- Cómo ejecutar un hilo Runnable en Android?
- ¿Cuál es la mejor práctica para hacer llamadas http en android
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 tener números de línea en Android Studio
- Cómo obtener la ruta del archivo en onActivityResult en Android 4.4