2012-06-18 30 views
11

Estoy haciendo una costumbre ImageView. Uno de los métodos es cargar una imagen desde una URL. Y quiero recuperar el mapa de bits en un subproceso y cargar el mapa de bits en el subproceso de interfaz de usuario.runOnUiThread dentro de una vista

¿Cómo puedo hacer una llamada runOnUIThread() para pintar el mapa de bits?

¿Hay algún tipo de función incorporada? ¿O debería crear un Handler en el constructor y usarlo para ejecutar ejecutables en el hilo de la interfaz de usuario?

+2

ir con el controlador. runOnUIThread es un método de actividad si no me equivoco – Rich

Respuesta

37

descargar la imagen a través de AsyncTask y se puso a la vista en su método onPostExecute

O

De un hilo imagen descargan privado uso de la método puesto de View que siempre seguirá su Runnable en UI-hilo:

yourImageView.post(new Runnable() { 
    @Override 
    public void run() { 
     // set the downloaded image here 

    } 
}); 
+0

más información aquí: http://stackoverflow.com/q/10558208 – cyrilchampier

2

Crea una clase que se extiende desde AsyncTask. Pase el ImageView en el constructor. En el método doInBackground, descarga la imagen. En el método postExecute, configure la imagen en ImageView.

4

se puede hacer algo como esto:

new Thread(new Runnable() { 
    public void run() { 
    final Bitmap bm = getBitmapFromURL(myStation.getStation().imageURL); 
    ((Activity) context).runOnUiThread(new Runnable() { 
     public void run() { 
     icon.setImageBitmap(bm); 
     } 
    }); 
    } 
}).start(); 

esto va a funcionar fuera de una actividad, como en un ListAdapter.

Cuestiones relacionadas