我自己学习Android多线程并使用此powerpoint作为主要资源:http://grail.cba.csuohio.edu/~matos/notes/cis-493/lecture-notes/Android-Chapter13-MultiThreading.pdf
我正在尝试Handler post方法。在幻灯片38中,它提到需要前景可运行且背景可以运行。
如果我希望我的前景可以运行视频视图,我是否需要将所有视频视频代码放入try / catch中?或正在创建视频视图本身创建自己可运行的前景? 还有另一种方法可以解决这个问题吗?
我感谢任何帮助,因为我对java和android都很陌生。
答案 0 :(得分:1)
首先查看前景vs背景android文档以及活动的工作原理。您不需要任何类型的处理程序来使视频视图起作用。视频观看次数。
然后看看处理程序是什么以及它们如何在这里工作 - http://developer.android.com/reference/android/os/Handler.html
为您的任务 - 在您的活动中编写一个单独的处理程序,负责您的视频观看 - 基本上在视频播放时听取时间,然后在播放时间与您想要弹出烤面包的时间相匹配时弹出。
Handler handler = new Handler();
...
handler.post(timefortoast);
....
int curVideoPosition;
private final Runnable timefortoast= new Runnable() {
public void run() {
try {
if (video.isPlaying()) {
cumulativeTimeSpent += 1;
}
// prepare and send the data here..
curVideoPosition = video.getCurrentPosition();
//Match cumulative time spent and curvideoposition to pop up whatever you want, toast or whatever in the middle of the video
然后在ondestroy
handler.removeCallbacks(timefortoast);
答案 1 :(得分:1)
您根本不需要使用Handlers
/ Threads
来实现VideoView
- 这应该像普通视图一样在UI线程上运行。
从您的评论中我理解这是一个学习练习,因此您可以实施一个Runnable
任务来执行您需要它执行的任务。它与你的VideoView
没有关系,只是你想要单独执行的事情。
例如:
private Runnable task = new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "HELLO!", Toast.LENGTH_LONG).show();
videoView.stopPlayback();
}
};
然后你可以通过以下方式来打电话:
Handler handler = new Handler()
handler.postDelayed(task, 5000);
task
中的代码将在调用handler.postDelayed()
我建议你让VideoView
正常工作,然后添加你的处理程序。