[英]media player crash after back button is pressed and open app again
好吧,我的應用程序啟動時有一個菜單,您在其中單擊一個按鈕即可開始使用該應用程序。 媒體播放器一開始就開始播放,但是如果我單擊“后退”按鈕,請單擊按鈕再次啟動應用程序,然后單擊“按鈕”停止音樂,從而使應用程序崩潰。 這是代碼。 它在手機上崩潰了,但是在仿真器中工作正常。 任何意見將不勝感激。 謝謝
int cancion = 1, cancion1 = 1;
MediaPlayer song, song1, song2, song3, song4;
if (cancion == 1)
{
song1.start();
playing = true;
song1.setLooping(true);
song = song1;
}
music.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View view) {
song.pause();
song.seekTo(0);
playing = false;
cancion = cancion+1;
if (cancion == 5)
{
cancion = 1;
}
if (cancion == 1)
{
song1.start();
playing = true;
song1.setLooping(true);
song = song1;
}
else if (cancion == 2)
{
song2.start();
playing = true;
song2.setLooping(true);
song = song2;
}
else if (cancion == 3)
{
song3.start();
playing = true;
song3.setLooping(true);
song = song3;
}
else if (cancion == 4)
{
song4.start();
playing = true;
song4.setLooping(true);
song = song4;
}
return true;
}
});
music.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (!playing)
{
song.start();
playing = true;
}
else
{
song.pause();
song.seekTo(0);
playing = false;
cancion1 = 2;
}
}
});
@Override
protected void onResume() {
super.onResume();
if(!song.isPlaying() && cancion1 != 2)
{
song.start();
playing = true;
}
}
@Override
public void onPause(){
super.onPause();
if(song.isPlaying())
{
song.pause();
song.seekTo(0);
playing = false;
}
}
LogCat:
04-22 22:12:47.151:W / ActivityNative(12915):發送ACTIVITY_IDLE_TRANSACTION 04-22 22:12:47.541:W / dalvikvm(12915):threadid = 1:線程退出而未捕獲(group = 0x400207d8)04- 22 22:12:47.551:E / AndroidRuntime(12915):致命異常:主04-22 22:12:47.551:E / AndroidRuntime(12915):java.lang.NullPointerException 04-22 22:12:47.551:E / AndroidRuntime(12915):在com.try.player.DragActivity $ 5.onClick(DragActivity.java:1772)04-22 22:12:47.551:E / AndroidRuntime(12915):在android.view.View.performClick(View。 java:2408)04-22 22:12:47.551:E / AndroidRuntime(12915):位於android.view.View $ PerformClick.run(View.java:8816)04-22 22:12:47.551:E / AndroidRuntime( 12915):位於android.os.Handler.handleCallback(Handler.java:587)04-22 22:12:47.551:E / AndroidRuntime(12915):位於android.os.Handler.dispatchMessage(Handler.java:92)04 -22 22:12:47.551:E / AndroidRuntime(12915):位於android.os.Looper.loop(Looper.java:123)04-22 22:12:47.551:E / AndroidRuntime(12915):位於android.app .ActivityThread.main( ActivityThread.java:4633)04-22 22:12:47.551:E / AndroidRuntime(12915):at java.lang.reflect.Method.invokeNative(Native Method)04-22 22:12:47.551:E / AndroidRuntime(12915) ):在java.lang.reflect.Method.invoke(Method.java:521)04-22 22:12:47.551:E / AndroidRuntime(12915):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run( ZygoteInit.java:858)04-22 22:12:47.551:E / AndroidRuntime(12915):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)04-22 22:12:47.551: E / AndroidRuntime(12915):位於dalvik.system.NativeStart.main(本機方法)
更改onPause()
以釋放所有MediaPlayer
對象,而不是嘗試重新啟動當前正在播放的歌曲。
像這樣:
@Override
public void onPause(){
super.onPause();
song.release();
song1.release();
//and so on
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.