Android 如何停止媒体播放器在线程内运行
每当按下process(进程)对话框的stop(停止)选项时,我都试图停止媒体播放器并退出我的activity(活动)类,但通过使用下面的代码,我可以退出activity(活动)类,但无法停止媒体播放器的声音,并且它一直运行到线程停止 请在这件事上帮助我 提前支付Android 如何停止媒体播放器在线程内运行,android,Android,每当按下process(进程)对话框的stop(停止)选项时,我都试图停止媒体播放器并退出我的activity(活动)类,但通过使用下面的代码,我可以退出activity(活动)类,但无法停止媒体播放器的声音,并且它一直运行到线程停止 请在这件事上帮助我 提前支付 public class Test_Service extends Activity { private MediaPlayer mp; private Thread welcomeThread; @Override public
public class Test_Service extends Activity {
private MediaPlayer mp;
private Thread welcomeThread;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mp = MediaPlayer.create(Test_Service.this,R.raw.alarm1);
welcomeThread=new Thread() {
int wait = 0;
@Override
public void run() {
try {
super.run();
while (wait <30000) {
mp.start();
sleep(3000);
wait +=3000;
}
} catch (Exception e) {
System.out.println("EXc=" + e);
} finally {
}
}
};
new AlertDialog.Builder(Test_Service.this)
.setTitle("Alarm is running")
.setPositiveButton("Stop",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
mp.stop();
welcomeThread.stop();
Test_Service.this.finish();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
mp.stop();
Test_Service.this.finish();
}
})
.create().show();
welcomeThread.start();
}
}
公共类测试服务扩展活动{
私人媒体播放器;
私有线程welcomeThread;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mp=MediaPlayer.create(Test_Service.this,R.raw.alarm1);
welcomeThread=新线程(){
int wait=0;
@凌驾
公开募捐{
试一试{
super.run();
while(wait首先,您应该使用处理程序
及其方法来延迟启动
此外,您可以在AlertDialog上设置以下OnDismissListener
,并将播放器停在那里以避免代码重复
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mp.release();
handler.removeCallbacks(startingRunnable);
finish();
}
});
将停止并释放您的MediaPlayer。如果要重用此MediaPlayer,您必须在调用release()
后创建一个新的MediaPlayer。首先,您应该使用处理程序及其方法延迟启动
此外,您可以在AlertDialog上设置以下OnDismissListener
,并将播放器停在那里以避免代码重复
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mp.release();
handler.removeCallbacks(startingRunnable);
finish();
}
});
将停止并释放您的MediaPlayer。如果要重用此MediaPlayer,必须在调用release()
welcomeThread.stop();后创建一个新的MediaPlayer。使用welcomeThread.interrupt();不是一个好的做法,而是使用welcomeThread.interrupt();