2012-03-07 74 views
1

我有一個奇怪的問題與應用程序。在啓動時它會播放視頻剪輯,這是通過使用線程完成的。我想要做的是讓主線程等待工作線程完成,然後繼續。 但是,無論我對線程中的視頻實例做什麼,我只會得到看起來不正確的值。例如video.GetHeight返回一個負整數值。即使視頻正在播放等,IsPlaying也會返回false。 視頻開始並且工作正常,但是我嘗試調用線程中的視頻實例的其他方法的所有值都會返回奇怪的值。 任何人都知道問題在哪裏?應用程序返回奇怪值

這裏是Thread類:

private class ThreadClass extends Thread { 
    public VideoView video; 
    public int ID = -1; 
    @Override public void run() { 
     if(this.ID == 1) 
     { 
      video = (VideoView)findViewById(R.id.introvideo); 
      video.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.intro); 
      video.start(); 
      System.out.println("Input ID: " + this.ID); 
     } 
     else 
      System.out.println("Unexpected ID (" + this.ID + ")"); 
    } 


} 
+1

我很驚訝,甚至工作。你爲什麼試圖從另一個線程做到這一點?視圖只能在UI(主)線程上運行。 – kabuko 2012-03-07 22:27:26

+0

該計劃是在視頻播放完成後切換表單。沒有找到任何方法來做到這一點?如果我在遊戲方法後將其應用於改變形式,它會立即改變形式。所以這就是爲什麼我創建一個負責播放視頻的線程。主線程應該等待這個線程在它繼續之前完成(更改表單)。 – Araw 2012-03-08 07:04:39

回答

0

使用UI線程。檢查this !

+0

謝謝,我會盡快查看:) – Araw 2012-03-08 07:05:00