Skip to content

柠檬TV v1.0.9 - 缓存机制修复版

Choose a tag to compare

@jia070310 jia070310 released this 01 Feb 04:18
· 2803 commits to main since this release

柠檬TV v1.0.9 - 缓存机制修复版

📦 下载信息

  • 文件名: LemonTV-v1.0.9-release.apk
  • 文件大小: 5.15 MB
  • 版本号: 1.0.9
  • 发布日期: 2026-02-01

🔥 重大修复

✅ 彻底修复缓存机制问题

修复的核心问题:

播放源过时后,服务器端更新链接,但 APP 无论怎么刷新源或清除缓存,都提示播放错误

🔧 技术改进

1. 缓存过期真正删除文件 ⭐⭐⭐

修复前:

  • 缓存过期后只设置 data = null,但不删除缓存文件
  • 导致文件的 lastModified 时间戳不更新
  • 下次判断仍然认为未过期

修复后:

if (isExpired(cacheFile.lastModified(), data)) {
    log.i("缓存已过期,删除缓存文件")
    clearCache()  // 真正删除文件 ✅
    data = null
}

2. "刷新源"功能强制刷新 ⭐⭐⭐

修复前:

  • 即使点击"刷新源",也受 cacheTime 限制
  • 如果距离上次下载不到 5 分钟,不会重新下载

修复后:

  • 新增 forceRefresh 参数
  • "刷新源"按钮调用 forceRefresh = true
  • 强制删除缓存并重新下载,无视缓存时间

3. 改进日志输出

新增详细日志便于排查问题:

  • 缓存已过期,删除缓存文件: xxx
  • 缓存文件已删除: xxx
  • 重新获取数据: xxx
  • 缓存数据已保存: xxx, 大小: xxx 字节
  • 强制刷新直播源:xxx

📝 修改的文件

核心文件修复

  1. FileCacheRepository.kt - 缓存基础类

    • getOrRefresh() - 缓存过期时真正删除文件
    • forceRefresh() - 新增强制刷新方法
    • clearCache() - 增强日志输出
  2. IptvRepository.kt - 直播源仓库

    • getIptvGroupList() - 新增 forceRefresh 参数
  3. MainViewModel.kt - 主界面逻辑

    • refreshCurrentSource() - 调用 forceRefresh = true
    • 添加重试机制和错误提示

✅ 解决的问题

问题 1:缓存过期不删除文件

现象:刷新源后仍然使用旧数据
根本原因:缓存文件没有被真正删除
现在的表现:

  • ✅ 点击"刷新源"立即删除缓存文件
  • ✅ 强制重新下载最新 M3U 文件
  • ✅ 显示明确的提示:"直播源刷新成功"

问题 2:刷新源功能受时间限制

现象:频繁刷新无效
根本原因:受 cacheTime(5分钟)限制
现在的表现:

  • ✅ 使用 forceRefresh 参数
  • ✅ 无视缓存时间,强制刷新
  • ✅ 文件时间戳正确更新

🧪 测试验证

✅ 测试 1:清除缓存功能

操作:设置 → 清除缓存
结果:

  • ✅ 缓存目录完全删除
  • ✅ 日志显示"删除缓存文件"
  • ✅ 重启后自动重新下载

✅ 测试 2:刷新源功能

操作:菜单键 → 刷新源
结果:

  • ✅ 文件时间戳从 12:01:53 更新到 12:09:36
  • ✅ 日志显示"强制刷新直播源"
  • ✅ 日志显示"缓存文件已删除"
  • ✅ 显示"直播源刷新成功"提示

✅ 测试 3:缓存过期检测

触发条件:文件不存在或超过缓存时间
结果:

  • ✅ 检测缓存是否过期
  • ✅ 删除缓存文件
  • ✅ 重新下载数据
  • ✅ 保存新缓存

📱 使用说明

刷新直播源

  1. 按遥控器菜单键打开快速面板
  2. 选择"刷新源"按钮
  3. 等待提示"直播源刷新成功"

清除缓存

  1. 进入设置界面
  2. 找到"清除缓存"选项
  3. 点击清除
  4. 返回主界面会自动重新加载

🎯 版本对比

功能 v1.0.8 及之前 v1.0.9
缓存过期删除 ❌ 只设置 null ✅ 真正删除文件
刷新源功能 ❌ 受时间限制 ✅ 强制刷新
日志输出 ⚠️ 简单 ✅ 详细完整
文件时间戳 ❌ 不更新 ✅ 正确更新

🔄 继承的功能

v1.0.8 的功能(保留)

  • ✅ 每个频道独立的 User-Agent 支持
  • ✅ HTTP Referer 完整支持
  • ✅ M3U 解析增强

v1.0.7 及之前的功能(保留)

  • ✅ 更新按钮主题色统一
  • ✅ Toast 提示框位置修复
  • ✅ 电视盒子更新安装修复
  • ✅ 智能直播源管理
  • ✅ EPG 多级降级加载
  • ✅ 一键刷新直播源
  • ✅ 多线路切换
  • ✅ 经典选台模式

📋 技术信息

包信息

  • 包名: com.lemontv.lite
  • 版本号: 1.0.9
  • 最低 Android 版本: 5.0 (API 21)
  • 支持架构: armeabi-v7a, arm64-v8a, x86_64

默认配置

  • 默认直播源: https://gh-proxy.org/https://raw.githubusercontent.com/jia070310/lemonTV/refs/heads/main/iptv-fe.m3u
  • 默认 EPG: http://epg.51zmt.top:8000/e.xml.gz
  • HTTP 服务端口: 10481
  • 直播源缓存时间: 24 小时
  • EPG 刷新时间: 每天凌晨 2:00

🐛 已知问题

无已知问题。


📞 反馈渠道


💡 升级建议

强烈建议升级!

如果你遇到以下情况,请立即升级到 v1.0.9:

  • ✅ 服务器更新直播源后,APP 仍然显示旧内容
  • ✅ 点击"刷新源"无效
  • ✅ 清除缓存后仍然播放失败
  • ✅ 提示播放错误但源地址是正确的

v1.0.9 - 彻底解决缓存问题,让刷新源真正生效! 🎉