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?

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) }}); 
  • Cómo pasar o asignar un valor obtenido en un runOnUiThread
  • Cómo implementar un Runnable con un no-bloqueador Looper / Handler
  • Una pregunta sobre Android runnable
  • ¿Cómo dejar de ejecutar cuando la aplicación va a fondo?
  • Cómo implementar una cola de runnables
  • Android: ¿Cómo puedo detener Runnable?
  • ¿Cómo puedo cambiar la tasa o el período de una tarea repetida mediante ScheduledExecutorService?
  • ¿Es este hilo seguro?
  • ¿Es esta Runnable a salvo de fugas de memoria?
  • Android OpenGL gameloop fuera de OnFrame
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.