我有一个扩展BaseActivity的Activity,其中在BaseActivity中它还创建了一个Thread,以便在不同Thread中的所有活动中播放MediaPlayer,这是我的代码:
在我的MainActivity中:
public class MainActivity extends BasedActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beginBGMusic();
}
}
在我的BasedActivity中:
public class BasedActivity extends AppCompatActivity {
MediaPlayer BGMusicPlayer;
Thread BGMusic;
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
protected void beginBGMusic(){
BGMusic = new Thread(){
public void run(){
BGMusicPlayer = MediaPlayer.create(this,R.raw.music.mp3);
}
};
BGMusic.start();
}
}
但是,MediaPlayer.create()需要一个上下文,我不明白我应该如何在一个线程中以及另一个类中设置上下文。
有谁知道如何用我的方法解决问题?
谢谢!
答案 0 :(得分:1)
/**
* Class MediaManager created on 11/07/16 - 4:01 PM.
* All copyrights reserved to the Zoomvy.
* Class behaviour is to initialize and play a media file on notification
*/
public class MediaManager {
/**
* SingleTon instance
*/
private static MediaManager sInstance;
private Context mContext;
private MediaManager(Context context) {
mContext = context.getApplicationContext();
}
public static MediaManager getInstance(Context context) {
if (null == sInstance) {
synchronized (MediaManager.class) {
sInstance = new MediaManager(context);
}
}
return sInstance;
}
}
上面是媒体管理器的单例类,您可以在这里进一步定义媒体播放器参考,它将是您所有活动的单个实例。
但我仍然建议使用服务而不是线程here,你可以找到MediaService的示例。