app
Go to file
fengge eaf169c626 内存优化: 清理 Activity onDestroy 中的 Companion 静态状态,防止跨实例数据污染
【问题背景】
MainActivity 与 TempCallActivity 都在 companion object 中保存了
Activity 生命周期之外的静态状态。这些字段在 onDestroy 中未全部清理:

1. pendingJsCode: 主线程同步访问的字符串缓冲区,可能持有大量待执行 JS
2. pendingDialog: 跨 Activity 实例缓存的弹窗信息,可能持有旧 Context 引用
3. isConflictDialogShowing: 弹窗标志,Activity 销毁后残留会导致新 Activity 状态错乱
4. TempCallActivity: 同类问题,仅部分清理 (currentGroupName)

【潜在风险】
- Activity 旋转屏/重建时,旧数据可能意外触发新 Activity 的逻辑
- 长期使用中,companion 状态累加,可能造成隐性内存泄漏
- 多 Activity 切换场景下,残留状态可能导致逻辑分支错误

【修复方案】
1. MainActivity.onDestroy 中新增 clearCompanionState() 方法:
   - pendingJsCode 置 null (在 jsLock 同步块内)
   - pendingDialog 置 null
   - isConflictDialogShowing 复位 false
2. 在 instance = null 之前调用,避免清理期间 Native 回调写入冲突
3. TempCallActivity 移除冗余中文注释,保留原有清理逻辑 (已正确)

【兼容性】
- 纯本地状态清理,不影响对外 API
- 编译通过 (Kotlin + Java)
- 行为变化: Activity 销毁后再次进入不会继承旧状态 (符合预期)

【影响范围】
- MainActivity.kt
- TempCallActivity.kt
2026-06-02 13:10:30 +08:00
.codegraph 优化 2026-06-01 23:24:28 +08:00
.idea 修复问题 2026-04-18 18:45:16 +08:00
app 内存优化: 清理 Activity onDestroy 中的 Companion 静态状态,防止跨实例数据污染 2026-06-02 13:10:30 +08:00
gradle 1 2026-04-26 19:15:48 +08:00
key 123 2026-04-01 22:23:47 +08:00
.gitignore 优化 2026-05-08 03:30:13 +08:00
build.gradle.kts webview 2026-04-29 10:21:38 +08:00
gradle.properties 123 2026-04-01 22:23:47 +08:00
gradlew 123 2026-04-01 22:23:47 +08:00
gradlew.bat 123 2026-04-01 22:23:47 +08:00
img.png 123 2026-04-01 22:23:47 +08:00
img_1.png ai 2026-05-20 11:11:50 +08:00
settings.gradle.kts webview 2026-04-29 10:21:38 +08:00