setVideoURI导致致命信号6(SIGABRT)

时间:2014-10-28 19:05:36

标签: android runtime-error

我正在测试我之前创建的旧应用。该应用程序正在使用光纤WiFi,但如果我使用正常的3G连接,应用程序崩溃信号6 VM错误。我尝试隔离问题,我发现它是由setVideoURI方法引起的。

这是我的代码:

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        if (videourl != null && videourI != null
                && extracted.contains(".mp4")) {
            videoview.setOnPreparedListener(MainActivity.this);
            mc = new MediaController(MainActivity.this);
            mc.setMediaPlayer(videoview);
            videoview.setVideoURI(videourI);
            videoview.start();
            save.setOnClickListener(MainActivity.this);
      }

这个问题似乎只存在于我的Moto G 4.4.4上。这是一个已知的问题?是否有解决方法?

1 个答案:

答案 0 :(得分:1)

VideoView.setVideoURI()为媒体播放启动新线程,但它是媒体解码部分,会导致额外的延迟。所以尝试在单独的Thread上运行该方法。

if (videourl != null && videourI != null && extracted.contains(".mp4"))
{
    videoview.setOnPreparedListener(MainActivity.this);
    mc = new MediaController(MainActivity.this);
    mc.setMediaPlayer(videoview);
    new Thread(new Runnable()
    {
        @Override
        public void run()
        {
            videoview.setVideoURI(videourI);  // make videoView final
            runOnUiThread(new Runnable()
            {
                @Override
                public void run()
                {
                    videoview.start();
                    save.setOnClickListener(MainActivity.this);
                }
            });
        }
    }).start();
}