mediaplayer.release() 不起作用


...................
    public class MPlayer extends Activity
    {
        MediaPlayer mp;
      @Override
      protected void onCreate(Bundle pSavedInstanceState)
      {
        super.onCreate(pSavedInstanceState);
        setContentView(R.layout.play_song);
        mp = new MediaPlayer();
        res = new String ("http://api.soundcloud.com/tracks/84973999/stream?client_id=cd9d2e5604410d714e32642a4ec0eed4");
        try{
                    mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mp.setDataSource(res);
                    mp.prepare();
                    mp.start();}
        catch (IOException e){}
    ..........................

      @Override
      public void onDestroy()
      {
          super.onDestroy();
          if (mp != null) {
               mp.release();
               mp = null; 
              }
      }

当我关闭活动(后退按钮)时:"此应用程序'名称'已意外停止。

日志猫:

02-12 01:04:52.924: W/dalvikvm(519): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-12 01:04:52.936: E/AndroidRuntime(519): FATAL EXCEPTION: main
02-12 01:04:52.936: E/AndroidRuntime(519): java.lang.NullPointerException
02-12 01:04:52.936: E/AndroidRuntime(519):  at com.keyes.youtube.MPlayer$1.run(MPlayer.java:140)
02-12 01:04:52.936: E/AndroidRuntime(519):  at android.os.Handler.handleCallback(Handler.java:587)
02-12 01:04:52.936: E/AndroidRuntime(519):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-12 01:04:52.936: E/AndroidRuntime(519):  at android.os.Looper.loop(Looper.java:123)
02-12 01:04:52.936: E/AndroidRuntime(519):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-12 01:04:52.936: E/AndroidRuntime(519):  at java.lang.reflect.Method.invokeNative(Native Method)
02-12 01:04:52.936: E/AndroidRuntime(519):  at java.lang.reflect.Method.invoke(Method.java:507)
02-12 01:04:52.936: E/AndroidRuntime(519):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-12 01:04:52.936: E/AndroidRuntime(519):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-12 01:04:52.936: E/AndroidRuntime(519):  at dalvik.system.NativeStart.main(Native Method)

我不知道如何解决这个问题..我尝试在释放之前先停止 mp,但我总是收到此错误。

onDestroy 方法应该是这样的:

  @Override
      public void onDestroy()
      {
           if (mp != null) {
               mp.release();
               mp = null; 
              }
         super.onDestroy();
      }

super.onDestroy() ==> 完成所有活动,所以没有"mp"的意思

试试吧

最新更新