...................
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"的意思
试试吧