Contexto dentro de un Runnable

Intento tocar un sonido de R.raw. Dentro de un hilo / Runnable Pero no puedo conseguir esto para trabajar.

 Nuevo Runnable () { 
   Public void run () {  

     // esto me da una NullPointerException, porque getBaseContext es null  
     MediaPlayer mp = MediaPlayer.create (getBaseContext (), R.raw.soundfile);  

     Mientras que (verdadero) {  
       si algo)  
           Jugar algo  
     }  
   }

¿Cómo puedo obtener el contexto real dentro del método run? Es nulo sin importar lo que intente. ¿O hay una mejor manera de hacer esto?

4 Solutions collect form web for “Contexto dentro de un Runnable”

También debería ser capaz de obtener esta referencia de la clase externa mediante MainActivity.this .

Debería utilizar getBaseContext. En su lugar, si este ejecutable se encuentra dentro de una actividad, debe almacenar el contexto en una variable de clase como ésta:

 public class MainActivity extends Activity { private Context context; public void onCreate( Bundle icicle ) { context = this; // More Code } // More code new Runnable(){ public void run() { MediaPlayer mp = MediaPlayer.create(context, R.raw.soundfile); while (true) { if (something) play something } } } } 

También no debería tener un bucle infinito como el que reproduce un sonido una y otra vez – debe haber un sueño allí para evitar que el sonido se reproduce una y otra vez en una pequeña cantidad de tiempo y se superponen los mismos sonidos entre sí .

Supongo que necesitas crear un Thread y llamar a Thread.start ().

Debe declarar un objeto Handler en el subproceso de UI.

A continuación, en su uso de hilo

 YourHandler.post(new Runnable() { public void run() { //do something to the UI (ie play something) }}); 
  • ¿Existe ya una clase StopWatch para android y por qué no funciona mi implementación?
  • ¿Es esta Runnable a salvo de fugas de memoria?
  • Cómo implementar una cola de runnables
  • ¿Cómo poner un runnable en paquete?
  • Tomando un cómputo pesado del subproceso de la interfaz de usuario de Android
  • Cómo implementar un Runnable con un no-bloqueador Looper / Handler
  • Una pregunta sobre Android runnable
  • Cómo pasar o asignar un valor obtenido en un runOnUiThread
  • Actualización de la interfaz de usuario desde un servicio (mediante un controlador?)
  • Problema al descargar la imagen y actualizar la listaVista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.