Android中的Timer和TimerTask - 进一步理解

时间:2017-09-11 07:58:59

标签: java android api

我正在使用camera2 API构建应用。现在我引用Google samples in github。问题是我无法理解停止当前录制视频时使用TimerTimerTask类的原因。希望能在这里帮忙。谢谢。

此处代码:

 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. TimerTimeTask的工作方式 2.上述类如何相互结合
另外,这种方法的主要作用是什么?

1 个答案:

答案 0 :(得分:1)

首先,应该明确TimerTimerTaskjava.util的一部分,不属于Android框架。
1。 Timer和TimerTask如何工作
TimerTask是一个实用程序类,它实现Runnable以覆盖run方法来执行您定义的任务。同时,Timer可帮助您安排时间并执行该任务。此外,您的任务将在后台线程中执行 的 2。上述课程如何相互结合
如上所述,TimerTask将定义您的实际任务,Timer将设置警报以执行它 第3。另外,这种方法的主要作用是什么?
当您致电stopRecordingVideo()时,此处使用定时器会在30毫秒后关闭后台线程中的MediaRecorder。我认为,这里使用Timer在后​​台threa而不是UI线程中执行MediaRecorder.stop()的主要目的。