Commit ff6b2712 authored by dsq's avatar dsq

文件重新命名

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