【问题标题】:Android app crash when call onPause调用 onPause 时 Android 应用程序崩溃
【发布时间】:2011-10-05 13:06:52
【问题描述】:

您好,我是 android 开发新手,我正在使用 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,它似乎确实有效,但它会提前切断我的声音片段。

因此,我们将非常感谢您对此提供任何帮助。

谢谢。

【问题讨论】:

  • 添加try-catch块并尝试找出它是什么异常

标签: android android-mediaplayer onpause


【解决方案1】:

唯一看起来有问题的是, 在致电eileanBeag.release(); 之前,您应该致电eileanBeag.stop();。播放时不能直接释放 Player。你也错过了super.onPause();

【讨论】:

    【解决方案2】:

    应该是这样的:

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

    【讨论】:

      【解决方案3】:

      您需要调用super.onPause() 作为onPause 方法中的第一条语句

      【讨论】:

        猜你喜欢
        • 2015-01-05
        • 2013-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-09
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多