java - android中的Timer和TimerTask——进一步理解

标签 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.上述类如何相互结合
3. 另外这个方法的主要作用是什么?

最佳答案

首先需要明确的是TimerTimerTaskjava.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/

相关文章:

java - 两个数字 x 和 y 来自两个不同的数组。查找是否存在满足 z= x+y 的和 z

Android - 如何删除 Realm 数据库

Android-如何等待 AlertDialog 检查?

android - 从 root Android 安装 apk,无需用户输入(语法上)

android - 如何在 Android 应用程序中集成 Linkedin?

java - 自定义 servlet 过滤器谷歌端点

用于 IOT 项目的多个服务器通信的 Java 单客户端线程

java - 将一个文件写入另一个文件

单独的 JAR 文件中的 Java API

java - 使用 Rest Assured GET 方法获取错误代码 503