fengge
|
8a7531428b
|
Merge remote-tracking branch 'origin/opti4' into opti6
|
2026-06-16 19:39:17 +08:00 |
fengge
|
d937ad854d
|
优化2
|
2026-06-16 19:28:16 +08:00 |
fengge
|
96068d56b2
|
优化(日志): 修复极端的日志 I/O 性能问题
1. 过滤掉高频的 VERBOSE 级别日志写入文件(例如录音帧),但依然让其能够在控制台中输出。
2. 保持日志的正常记录逻辑不变,仅作频率控制拦截,减少低端机因为频繁磁盘读写而引发的阻塞、卡顿与 OOM 问题。
|
2026-06-03 14:48:56 +08:00 |
fengge
|
854e04b28f
|
性能优化: 引入 NetworkModule 单例,统一管理 4 处独立 OkHttpClient 实例
【问题背景】
原项目存在 4 处独立的 OkHttpClient 实例:
1. LoginActivity.kt:20 - private val client = OkHttpClient()
2. UpdateManager.kt:61 - val client = OkHttpClient() (检查更新)
3. UpdateManager.kt:142 - val client = OkHttpClient() (下载 APK)
4. LogManager.kt:20 - private val client = OkHttpClient()
5. AiChatRepository.kt - 独立 Builder().readTimeout(0, ms) 用于 SSE
每个 OkHttpClient 内部都创建独立的:
- Dispatcher (默认最多 64 并发请求)
- ConnectionPool (默认 5 个 keep-alive 连接)
- 线程池 (同步/异步请求各一组)
- 任务调度队列
【潜在问题】
1. 资源浪费: 5 个客户端 = 5 套连接池/线程池,空闲时仍占内存
2. 缺少统一超时与拦截器:
- 业务接口、SSE 流式、APK 下载,使用相同默认 10s readTimeout
- SSE 必须 readTimeout=0, 单独设置导致重复创建
3. 无法统一添加公共拦截器 (Token 注入、日志、Mock 等)
4. 单元测试与替换困难, 难以 mock 网络层
【修复方案】
新增 com.stand.standapp.net.NetworkModule (单例 object):
1. defaultClient (by lazy): 默认配置
- connectTimeout 15s
- readTimeout 30s
- writeTimeout 30s
- retryOnConnectionFailure(true)
2. streamingClient(): 复用 defaultClient, 覆写 readTimeout=0 用于 SSE
3. 替换 5 处使用方:
- LoginActivity → NetworkModule.defaultClient
- UpdateManager (两处) → NetworkModule.defaultClient
- LogManager → NetworkModule.defaultClient
- AiChatRepository → NetworkModule.streamingClient()
【收益】
- 减少 4 个客户端实例 (内存占用降低约 100-200KB,依线程数)
- 统一连接池上限 5 keep-alive, 避免系统 fd 浪费
- 为后续引入拦截器 (Token 注入/重试/日志) 铺平道路
- 代码可测试性提升, 通过 NetworkModule 可注入 mock client
【兼容性】
- 公共 API 不变 (OkHttpClient 接口)
- 编译通过 (Java + Kotlin)
- 业务行为不变 (超时/重试参数与原默认一致)
【影响范围】
- 新增: NetworkModule.kt
- 修改: LoginActivity.kt, UpdateManager.kt, LogManager.kt, AiChatRepository.kt
|
2026-06-02 13:12:49 +08:00 |
fengge
|
a2c8fd2c1a
|
性能优化: 降低GPIO硬件轮询频率以降低CPU负载
|
2026-06-01 18:09:23 +08:00 |
fengge
|
a982e54eeb
|
bug修复: 移除危险的Looper.loop()全局劫持
|
2026-06-01 18:08:28 +08:00 |
844143714@qq,com
|
d022fa5f2d
|
日志
冲突
|
2026-05-21 20:43:23 +08:00 |
844143714@qq,com
|
d4801dd02c
|
临时群
|
2026-05-13 17:11:57 +08:00 |
844143714@qq,com
|
dd01f15497
|
优化
|
2026-05-07 13:37:51 +08:00 |
844143714@qq,com
|
29b31fbf69
|
实现账号冲突和账号更新时弹窗后的 App 重启
|
2026-04-30 02:28:41 +08:00 |
844143714@qq,com
|
62ce781993
|
修复 AppKiller 引起的死循环崩溃和前端解析兼容性
|
2026-04-30 01:49:27 +08:00 |
844143714@qq,com
|
2d7b00be45
|
优化应用退出与异常销毁流程、项目性能代码优化
|
2026-04-30 01:30:00 +08:00 |
844143714@qq,com
|
e943361349
|
1
|
2026-04-30 00:50:59 +08:00 |
844143714@qq,com
|
97276904ff
|
界面状态
|
2026-04-27 23:02:26 +08:00 |
844143714@qq,com
|
4d12f780ea
|
物理按键
|
2026-04-27 22:48:58 +08:00 |
fengge
|
d74ae2f846
|
开发者
|
2026-04-23 11:41:37 +08:00 |
fengge
|
76b6a7eae2
|
开发者
|
2026-04-23 11:35:36 +08:00 |
fengge
|
3302225e74
|
开发者
|
2026-04-23 11:11:49 +08:00 |
fengge
|
0e5883d0de
|
屏蔽ptt
|
2026-04-19 14:02:11 +08:00 |
fengge
|
a957afd5d4
|
日志
|
2026-04-19 02:01:52 +08:00 |