Mediaplayer和finish()方法

时间:2012-09-17 15:03:36

标签: java android

我只是在android中测试mediaplayer,我在onCreate方法中启动了一个流,我有一个调用finish()方法的按钮。点击按钮后我仍然可以听到流播放,即使活动已经关闭,我想知道这是否是各种各样的泄漏,我将不得不在调用finish()方法之前先停止播放器,或者如果finish()方法实际上没有完全杀死应用程序以释放资源。感谢您阅读

            public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button add_function,exit_btn;   
            add_function = (Button) findViewById(R.id.view_chat);
            exit_btn = (Button) findViewById(R.id.exit_btn);


            MediaPlayer mp = new MediaPlayer();
            String URL_OF_FILE = "http://stream.radiosai.net:8002/";
    try {
        mp.setDataSource(URL_OF_FILE);
         mp.prepare();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

            mp.start();



        exit_btn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                finish();
            }
        });
             }// EOF ONCREATE

1 个答案:

答案 0 :(得分:2)

调用finish()不会终止应用程序,它只会破坏您正在完成的当前Activity。虽然我认为完成活动会停止MediaPlayer,但在这种情况下您应该做的是覆盖onDestroy(),并在那里释放您的MediaPlayer对象。例如:

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