Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 305|回复: 0

kt的新加线程

[复制链接]

465

主题

640

帖子

3734

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3734
发表于 2025-11-28 17:10:25 | 显示全部楼层 |阅读模式
    private fun stopAudioRecording() {
        Thread {
            try {
                audioRecordRunning = false
                Log.d(tag, "主程序:将要停止录制")
                audioRecord.isRecording = false
                // Thread.sleep(1000)
                audioRecord.stopRecord()  // !
            } catch (e: Exception){
                Log.e(tag, "Failed to stop audio recording", e)
            }
            // 直接调用静态方法
            //VoskHelper.sendFile();
        }.start()
        //audioRecord.isRecording = false
//        recordingSession?.let {
//            FFmpegKit.cancel(it.sessionId)
//        }
    }

这个 `Thread` 是**新添加的线程**,不是主线程。

具体分析:

1. **新建线程**:代码中使用 `Thread(object : Runnable { ... })` 明确创建了一个新的线程实例。

2. **独立执行**:这个线程独立于主线程(UI线程)运行,用于执行录音相关的后台操作。

3. **目的**:创建新线程是为了避免在主线程中执行耗时的录音操作,防止阻塞UI界面。

4. **对比其他地方**:在 [MainActivity.kt](file://C:\s_c\Android\vosk_renew_slim\Versions\MainActivity.kt) 中还有其他类似的用法,比如在 [stopAudioRecording](file://C:\s_c\Android\vosk_renew_slim\Versions\MainActivity.kt#L169-L187) 方法中也创建了新的线程来执行停止录音的操作。

所以这是一个典型的Android开发模式:在后台线程执行耗时操作,避免影响主线程的响应性。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2026-2-4 10:53 , Processed in 0.011216 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表