我有我的主活动,它从setContentView设置的名为DrawView的自定义SurfaceView开始。主活动(抽奖)在中有以下方法
public void launchCutScene(int scene) {
Intent intent = new Intent(Draw.this, CutScene.class);
startActivityForResult(intent, 0);
}
如果在setContentView之后直接调用此方法,则新的活动CutScene将正确加载。CutScene如下
public class CutScene extends Activity implements OnCompletionListener, OnPreparedListener{
String pathToFile = "";
VideoView videoPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pathToFile = "EM Math/" + "st.mp4";
setContentView(R.layout.main);
File root = Environment.getExternalStorageDirectory();
videoPlayer = (VideoView) findViewById(R.id.myvideoview);
videoPlayer.setOnPreparedListener(this);
videoPlayer.setOnCompletionListener(this);
videoPlayer.setKeepScreenOn(true);
videoPlayer.setVideoPath(root + "/" + pathToFile);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
public void onPrepared(MediaPlayer vp) {
videoPlayer.start();
}
@Override
public void onCompletion(MediaPlayer mp) {
finish();
}
@Override
public boolean onTouchEvent (MotionEvent ev){
if(ev.getAction() == MotionEvent.ACTION_DOWN){
if(videoPlayer.isPlaying()){
videoPlayer.pause();
} else {
videoPlayer.start();
}
return true;
} else {
return false;
}
}
}
然而,如果在DrawView中,我调用draw.launchCutScene(0),那么活动仍然会出现,但视频出现故障,它要么保持为黑屏,你必须按下后退键才能使活动崩溃,在这种情况下,它将显示第一个活动。或者,它只会播放声音,但会多次播放且不同步。无论哪种方式,在它崩溃后,如果在DrawView类中再次执行launchCutScene调用,视频现在可以正常工作。
为什么会发生这种情况?有人明白我需要做什么吗?
好的,很好地修复了错误!
我所要做的就是将线程可运行布尔值设置为false,然后调用活动。一旦活动关闭,我的程序就会重新启动线程,现在一切都很顺利!!!!。。。所以,如果你的视频视图出现了这个视频错误,那可能是因为你在后台运行了一个线程!