Commit ff6b2712 authored by dsq's avatar dsq

文件重新命名

parent 07adf52c
......@@ -45,6 +45,7 @@ kotlin {
// 确保链接系统 zlib,使 libkn.so 的 NEEDED 包含 libz.so
linkerOpts("-lz")
}
// 禁用内联类可能有助于 NAPI
val main by compilations.getting
main.compilerOptions.configure {
freeCompilerArgs.add("-Xbinary=sanitizer=address")
......
......@@ -8,9 +8,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import com.dong.demo013.LogController
import com.dong.demo013.TimerController
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlin.time.TimeSource
@OptIn(ExperimentalLayoutApi::class)
@Composable
......@@ -19,22 +19,35 @@ internal fun HighLogDemo() {
var logSpeed by remember { mutableStateOf("100") }
var logCount by remember { mutableStateOf(0) }
var isGenerating by remember { mutableStateOf(false) }
var logController by remember { mutableStateOf<LogController?>(null) }
// 计时器状态
var timerController by remember { mutableStateOf<TimerController?>(null) }
// 计时器状态 - 使用纯 Compose 方式实现
var displayTime by remember { mutableStateOf(0L) }
var isTimerRunning by remember { mutableStateOf(false) }
val timeSource = remember { TimeSource.Monotonic }
var startTimeMark by remember { mutableStateOf(timeSource.markNow()) }
// 初始化计时器
LaunchedEffect(Unit) {
// 使用 LaunchedEffect 实现计时器
LaunchedEffect(isTimerRunning) {
if (isTimerRunning) {
startTimeMark = timeSource.markNow()
while (isActive && isTimerRunning) {
delay(100) // 每 100ms 更新一次显示
displayTime = startTimeMark.elapsedNow().inWholeSeconds
}
} else {
// 暂停时重置时间
displayTime = 0
}
}
// 定期更新显示时间
LaunchedEffect(timerController) {
while (true) {
delay(100) // 每100ms更新一次显示
displayTime = timerController?.elapsedTime ?: 0
// 日志生成协程
LaunchedEffect(isGenerating, logSpeed) {
if (isGenerating) {
val speed = logSpeed.toIntOrNull() ?: 100
while (isActive && isGenerating) {
delay(speed.toLong())
logCount++
}
}
}
......@@ -123,14 +136,10 @@ internal fun HighLogDemo() {
) {
Button(
onClick = {
val speed = logSpeed.toIntOrNull() ?: 100
// 启动日志生成和计时器
logCount = 0
// 重置并启动计时器
timerController?.reset()
timerController?.start()
isGenerating = true
isTimerRunning = true
},
modifier = Modifier.weight(1f),
enabled = logSpeed.isNotEmpty() && !isGenerating
......@@ -140,9 +149,9 @@ internal fun HighLogDemo() {
Button(
onClick = {
logController?.stop()
timerController?.stop()
// 停止日志生成和计时器
isGenerating = false
isTimerRunning = false
},
modifier = Modifier.weight(1f),
enabled = isGenerating
......
......@@ -17,3 +17,6 @@ kotlin.native.cacheKind=none
org.gradle.internal.http.connectionTimeout=100000
org.gradle.internal.http.socketTimeout=100000
# kotlin.mpp.applyDefaultHierarchyTemplate=false
kotlin.native.optimizations.extraOpts=-Oz
kotlin.native.binary.alignment=8
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment