我正在使用camera2 API构建应用。现在我引用Google samples in github。问题是我无法理解停止当前录制视频时使用Timer
和TimerTask
类的原因。希望能在这里帮忙。谢谢。
此处代码:
private void stopRecordingVideo() {
// UI
mIsRecordingVideo = false;
mButtonVideo.setText(R.string.record);
// Stop recording
try {
mPreviewSession.stopRepeating();
mPreviewSession.abortCaptures();
} catch (CameraAccessException e) {
e.printStackTrace();
}
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
mMediaRecorder.stop();
mMediaRecorder.reset();
}
};
timer.schedule(timerTask,30);
startPreview();
}
我只是想知道这一点
1. Timer
和TimeTask
的工作方式
2.上述类如何相互结合
另外,这种方法的主要作用是什么?
答案 0 :(得分:1)
首先,应该明确Timer和TimerTask是java.util
的一部分,不属于Android框架。
的 1。 Timer和TimerTask如何工作
TimerTask
是一个实用程序类,它实现Runnable
以覆盖run
方法来执行您定义的任务。同时,Timer
可帮助您安排时间并执行该任务。此外,您的任务将在后台线程中执行
的 2。上述课程如何相互结合
如上所述,TimerTask
将定义您的实际任务,Timer
将设置警报以执行它
第3。另外,这种方法的主要作用是什么?
当您致电stopRecordingVideo()
时,此处使用定时器会在30毫秒后关闭后台线程中的MediaRecorder
。我认为,这里使用Timer
在后台threa而不是UI线程中执行MediaRecorder.stop()
的主要目的。