我正在测试我不久前创建的一个旧应用程序。该应用程序在光纤 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/