2014-10-28 100 views
2

我測試的舊的應用程序我創建了一個前一陣子。該應用程序正在研究光纖WiFi,但如果我使用正常的3G連接,該應用會以信號6虛擬機錯誤崩潰。我試着隔離這個問題,發現它是由setVideoURI方法引起的。setVideoURI導致致命信號6(SIGABRT)

這裏是我的代碼:

@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只存在。這是一個已知的問題?是否有解決方法?

+2

您應該添加堆棧跟蹤與本地位以及。 – auselen 2014-11-05 07:54:59

回答

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

現在我得到這個錯誤:11-05 23:03:06.404:E/AndroidRuntime(4954):了java.lang.RuntimeException:無法裏面)線程已經不叫Looper.prepare( – 2014-11-05 22:04:56

+0

創建處理程序嘗試使用runOnUiThread( )來包裝線程。 – Robert 2015-01-23 04:44:15