繁体   English   中英

Android 在尝试使用 release() 时强制关闭; 停止媒体播放器

[英]Android force closing when trying to use release(); to stop MediaPlayer

我正在创建一个应用程序,它将在开始时播放加载 MediaPlayer,然后在几秒钟后,这个 class 将被销毁并移动到另一个 class。 问题是每当第一个 class 被破坏时,我都会尝试停止 MediaPlayer,但它只会强制关闭我。 这是代码。

public class HelloWorldActivity extends Activity {
    MediaPlayer mp;    

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        final MediaPlayer mp = MediaPlayer.create(this, R.raw.otj);
        mp.start();

        Thread LogoTimer = new Thread() {
            public void run() {
                try {
                    int LogoTimer = 0;
                    while(LogoTimer < 5000) {
                        sleep(100);
                        LogoTimer = LogoTimer + 100;
                    }

                    startActivity(new Intent("com.example.HelloWorld.CLEARSCREEN"));
                } 

                catch (InterruptedException e) {
                    e.printStackTrace();
                }

                finally {
                    finish();
                }
            }
        };

        LogoTimer.start();
    }

    protected void onDestroy() {
        super.onDestroy();
        mp.release();
    }

onCreate()中,您声明了另一个名为mp的变量,它隐藏了 class 字段mp ,这意味着您在onDestroy()上调用的mpnull

从行中删除final MediaPlayer final MediaPlayer mp = MediaPlayer.create(this, R.raw.otj); 所以你会一直使用原件。

您的代码应如下所示:

public class HelloWorldActivity extends Activity {
    MediaPlayer mp;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    mp = MediaPlayer.create(this, R.raw.otj);
    mp.start();

mp.release() 怎么样? 它应该停止媒体播放器,但只要 onDestroy(){} 运行它就会强制关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM