2012-03-07 69 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