我正在使用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.上述类如何相互结合
3. 另外这个方法的主要作用是什么?
最佳答案
首先需要明确的是Timer和 TimerTask是java.util
的一部分,不属于Android框架。
1. Timer 和 TimerTask 是如何工作的
TimerTask
是一个实用程序类,它实现 Runnable
来重写 run
方法来执行您定义的任务。同时,Timer
可以帮助您安排时间并执行该任务。此外,您的任务将在后台线程中执行。
2.上述类如何相互结合
如上所述,TimerTask
将定义您的实际任务,而 Timer
将设置闹钟来执行它。
3.另外这个方法的主要作用是什么?
当您调用 stopRecordingVideo()
时,此处使用 Timer 在 30 毫秒后关闭后台线程中的 MediaRecorder
。正如我所想,这里使用 Timer
的主要目的是在后台线程而不是 UI 线程中执行 MediaRecorder.stop()
。
关于java - android中的Timer和TimerTask——进一步理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150812/