ogg*_*ggy 6 multithreading android media-player android-context runnable
我尝试播放R.raw的声音.在一个线程/ Runnable内但我不能让它工作.
new Runnable(){
public void run() {
//this is giving me a NullPointerException, because getBaseContext is null
MediaPlayer mp = MediaPlayer.create( getBaseContext(), R.raw.soundfile);
while (true) {
if (something)
play something
}
}
如何在run方法中获得真正的Context?无论我尝试什么,它都是null.或者有更好的方法吗?
And*_*wKS 13
你应该使用getBaseContext.相反,如果此runnable在一个活动中,您应该将上下文存储在类变量中,如下所示:
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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此外,你不应该像一遍又一遍地播放声音那样有一个无限循环 - 那里应该有一个睡眠,以防止声音在很短的时间内反复播放,并相互重叠相同的声音.