调用onPause时Android应用程序崩溃

时间:2011-10-05 13:06:53

标签: android android-mediaplayer onpause

你好我对android dev很新,我正在使用Eclipse而且我一直在开发一些音板。我的问题是:

public class BernardsActivity extends Activity {

    MediaPlayer eileanBeag;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bernards_layout);

        Button eileanBeagButton = (Button) findViewById(R.id.ButtonB1);

        eileanBeagButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                eileanBeag = MediaPlayer.create(getApplicationContext(), R.raw.eilean_beag);
                eileanBeag.start();
            }    
      });  

    ***public void onPause() {
        eileanBeag.release();                   
    }***    
}

应用程序工作正常,所有音频都播放得很好,但是当我使用后退按钮离开应用程序时,它会告诉我进程已意外停止,我必须强制退出。

当我在onCreate方法之外定义MediaPlayer时,该方法工作正常,但我希望使用很多声音并减少加载时间我只在按下按钮后定义它。

我已经尝试过使用OnCompleteListener,它似乎确实有用,但它会提前关闭我的声音片段。

所以对此的任何帮助都将非常感激。

感谢。

3 个答案:

答案 0 :(得分:3)

唯一看起来像问题的是, 在致电eileanBeag.release();之前,您应致电eileanBeag.stop();。您在玩游戏时无法直接释放播放器。您还缺少super.onPause();

答案 1 :(得分:2)

应该是这样的:

public void onPause() {
    super.onPause();
    eileanBeag.pause();
}

protected void onDestroy() {
    super.onDestroy();
    if(eileanBeag != null) {
        eileanBeag.stop();  
        eileanBeag.release();
    }
}

答案 2 :(得分:0)

您需要将super.onPause()作为onPause方法

中的第一个语句