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 implementar una cola de runnables
  • El hilo no interrumpe
  • Cómo implementar un Runnable con un no-bloqueador Looper / Handler
  • ¿Un runnable en un servicio se ejecuta en el subproceso de interfaz de usuario
  • Mejor manera de esperar a que retrofit2 termine antes de continuar async
  • ¿Cómo poner un runnable en paquete?
  • ¿Es esta Runnable a salvo de fugas de memoria?
  • Android OpenGL gameloop fuera de OnFrame
  • ¿Es este hilo seguro?
  • Actualizar la interfaz de usuario de Android desde un subproceso de otra clase
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.