This commit is contained in:
844143714@qq,com 2026-07-19 03:37:54 +08:00
parent f840740a1a
commit 65943334b1
3 changed files with 46 additions and 33 deletions

View File

@ -43,7 +43,7 @@ class DeveloperActivity : AppCompatActivity() {
val etUser = EditText(this).apply {
hint = "账号"
setText("test007")
setText("test010")
}
layout.addView(etUser)

View File

@ -20,6 +20,9 @@ class MainActivity : AppCompatActivity() {
companion object {
private var instance: MainActivity? = null
@Volatile
private var geckoRuntime: GeckoRuntime? = null
// 防止对话框堆叠
@Volatile
private var isConflictDialogShowing = false
@ -186,7 +189,6 @@ class MainActivity : AppCompatActivity() {
}
private var geckoSession: GeckoSession? = null
private var geckoRuntime: GeckoRuntime? = null
private var pttInterface: AndroidInterface? = null
private var canGoBack = false
private lateinit var geckoView: GeckoView
@ -275,38 +277,46 @@ class MainActivity : AppCompatActivity() {
}
private fun createGeckoRuntime(): GeckoRuntime {
// 1. 将配置写入应用的本地沙盒文件 (YAML 格式)
val configFile = java.io.File(filesDir, "geckoview-config.yaml")
try {
val configContent = """
prefs:
layout.testing.overlay-scrollbars.always-visible: true
""".trimIndent()
configFile.writeText(configContent)
Timber.tag("MainActivity").d("Wrote GeckoView config to: ${configFile.absolutePath}")
} catch (e: Exception) {
Timber.tag("MainActivity").e(e, "Failed to write geckoview-config.yaml")
synchronized(MainActivity::class.java) {
val existing = geckoRuntime
if (existing != null) {
return existing
}
// 1. 将配置写入应用的本地沙盒文件 (YAML 格式)
val configFile = java.io.File(filesDir, "geckoview-config.yaml")
try {
val configContent = """
prefs:
layout.testing.overlay-scrollbars.always-visible: true
""".trimIndent()
configFile.writeText(configContent)
Timber.tag("MainActivity").d("Wrote GeckoView config to: ${configFile.absolutePath}")
} catch (e: Exception) {
Timber.tag("MainActivity").e(e, "Failed to write geckoview-config.yaml")
}
// 2. 通过 GeckoRuntimeSettings.Builder 加载该 YAML 配置文件并创建 GeckoRuntime 实例
val settingsBuilder = org.mozilla.geckoview.GeckoRuntimeSettings.Builder()
.aboutConfigEnabled(true)
.consoleOutput(true)
if (configFile.exists()) {
settingsBuilder.configFilePath(configFile.absolutePath)
}
val runtime = GeckoRuntime.create(this.applicationContext, settingsBuilder.build())
geckoRuntime = runtime
// 3. 强制清缓存,确保 JS/CSS 等资源获取最新版本
try {
// runtime.storageController.clearData(ClearFlags.ALL)
Timber.tag("MainActivity").i("GeckoView cache cleared")
} catch (e: Exception) {
Timber.tag("MainActivity").w(e, "Failed to clear GeckoView cache")
}
return runtime
}
// 2. 通过 GeckoRuntimeSettings.Builder 加载该 YAML 配置文件并创建 GeckoRuntime 实例
val settingsBuilder = org.mozilla.geckoview.GeckoRuntimeSettings.Builder()
.aboutConfigEnabled(true)
.consoleOutput(true)
if (configFile.exists()) {
settingsBuilder.configFilePath(configFile.absolutePath)
}
val runtime = GeckoRuntime.create(this, settingsBuilder.build())
// 3. 强制清缓存,确保 JS/CSS 等资源获取最新版本
try {
// runtime.storageController.clearData(ClearFlags.ALL)
Timber.tag("MainActivity").i("GeckoView cache cleared")
} catch (e: Exception) {
Timber.tag("MainActivity").w(e, "Failed to clear GeckoView cache")
}
return runtime
}
private fun createSession(): GeckoSession {

View File

@ -47,6 +47,9 @@ object GpioManager {
handleGpioChange(currentValue)
lastGpioValue = currentValue
}
} catch (e: InterruptedException) {
Timber.tag("GPIO").i("GPIO thread interrupted, exiting gracefully")
break
} catch (e: Exception) {
Timber.tag("GPIO").e(e, "Error in GPIO loop")
}