android - setVideoURI 导致致命信号 6(SIGABRT)

标签 android runtime-error

我正在测试我不久前创建的一个旧应用程序。该应用程序在光纤 WiFi 上运行,但如果我使用普通 3G 连接,该应用程序会崩溃并出现 signal 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);
      }

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

最佳答案

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

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();
}

关于android - setVideoURI 导致致命信号 6(SIGABRT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26616513/

相关文章:

android-studio - 尝试在android上构建应用程序时如何解决 "Cannot parse result path string:"?

java - 如何在 Android 应用程序中使用 GSON 从 Youtube API 读取 JSON-c 数据

android - 如何根据构建变体更改 AndroidManifest.xml 文件?

java - 数组索引越界异常(Java)

c - 为什么我的 C 程序显示的 int 与应有的不同

java - Endeca 导航引擎无法处理请求

Java - Android SDK - 不幸的是<项目名称>发生了崩溃错误

android - 抓取webview时,没有显示view的内容是白色的

android - Eclipse 在没有时显示错误

android - 启动 Android Netflix 应用程序并传递视频 ID