故障排查

小组件不显示或不更新

  • 小组件由 WorkManager 每 15 分钟自动刷新一次。在添加新课程或修改课表后,进入"我的"→"刷新小组件"手动触发即时更新,无需等待下一个刷新周期
  • 如果小组件完全空白(连标题都没有),检查你当前选中的课表是否有课程数据。进入"管理"标签页确认当前课表不是空的——如果课表是空的,小组件自然什么都不会显示
  • 尝试切换到另一张课表("我的"→"全部课表"→点选另一张课表),然后再切回原来的课表。有时候这个操作可以触发小组件的强制刷新
  • 如果以上方法都不起作用,尝试从桌面上长按移除小组件,然后按照"添加小组件"的步骤重新添加一次
  • WeekGrid 小组件使用 Canvas Bitmap 方案渲染(而非 Glance)。如果你发现其他三个小组件(Today、TwoDay、WeekList)都能正常显示,只有 WeekGrid 不显示,可能是 Canvas 渲染过程出现了异常。这种情况请尝试先切换到另一张课表再切回来,或者移除后重新添加

教务系统导入失败

  • 网络问题:绝大多数中国大学的教务系统部署在校园内网中——你只能通过连接校园 WiFi 或者学校的 VPN 服务才能访问。如果你在校外使用手机流量(4G/5G)尝试导入,几乎一定会因为网络不通而失败。确保手机已连接到校园无线网络后再试
  • 教务系统改版或升级:如果你之前可以正常导入但最近突然不能用了,很可能是学校对教务系统进行了版本升级——改变了页面的 HTML 结构、API 端点地址、或登录流程。Sleepy 的解析器是针对特定版本的教务系统编写的,系统升级后解析器需要相应更新。请在 GitHub Issues 中提交一个 issue 报告,提供你的学校名称和教务系统截图(注意:不要包含你的学号、密码等个人隐私信息)
  • 账号密码问题:确认你在 WebView 中输入的学号和密码完全正确(注意大小写)。部分学校的初始密码(例如身份证后六位)需要先登录教务系统修改一次后才能正常使用。如果系统弹出了验证码,在 WebView 中手动输入——Sleepy 不做验证码自动识别
  • WebView 加载慢:教务系统的登录页面可能在 WebView 中加载较慢——特别是首次访问时。请耐心等待页面完全加载完毕(看到完整的登录表单),不要在半加载状态下就开始输入学号密码

导入后课表数据与实际不符

  • 导入流程中有一个预览页面——在点"确认导入"之前,仔细核对一下页面显示的课程数量和时间是否和你的实际课表一致。如果预览显示的数据明显不对(比如课程数量比实际多了一倍、或者时间全部错位),不要点确认——点返回重新尝试,或者换一种导入方式
  • 作息时间表配置不正确是导致课程时间显示错误的常见原因。教务系统返回的数据是以节次编号来表示的("第 1 节"、"第 2 节"),Sleepy 需要根据作息时间表将节次编号换算为具体的时间。如果你的作息时间表配置和学校实际安排不一致——例如你把第一节的开始时间设成了 08:30 而学校实际是 08:00——那么所有的课程时间都会整体偏移。请进入"管理"→"编辑当前课表"→"时间表设置",核对作息时间表是否和学校的实际作息安排一致
  • 如果你使用"追加不冲突课程"模式导入,某些课程可能因为没有通过冲突检测而被跳过。预览页面会明确显示有多少课程被跳过——如果被跳过的数量很多而你期望它们都应该被导入,尝试换用"替换当前课表"或"另存为新课表"模式

课程颜色太相近,难以区分

  • 系统使用黄金角算法(色相 = courseId × 137.508° % 360°)自动分配颜色,保证颜色在色相环上均匀分布。但如果你有非常多门课(超过 10 门),色相空间有限,难免会有几门课的颜色比较接近。解决方案:为容易混淆的课程手动设置差异明显的自定义颜色——进入课表页面,点按那门课程色块,选择"编辑",点击颜色圆圈打开 HSV 拾色器,挑选一个和周围课程颜色明显不同的颜色
  • 切换到深色模式——深色背景下课程颜色的饱和度会自动提高,颜色之间的视觉对比更强,更容易区分
  • 你手动设置的自定义颜色不会被系统的自动分配算法覆盖——一旦你为一门课选了颜色,无论你添加多少门新课,它的颜色都不会变

App 闪退或卡顿

  • 确保你使用的是 Sleepy 的最新版本。旧版本可能存在已在后续版本中修复的 bug。访问 GitHub Releases 页面下载最新版 APK 并安装(更新安装不会丢失已有的课表数据)
  • 如果 App 在导入大量课程数据后开始闪退,可能是数据库文件出现了损坏。尝试以下步骤:首先用"导出课表"功能保存当前课表为 JSON 备份文件(我的→导出课表)→ 然后进入手机系统设置 → 应用 → Sleepy → 存储 → 点击"清除数据"(注意:这会删除所有本地课表信息)→ 重新打开 App → 用"导入课表"功能导入刚才保存的 JSON 备份文件
  • 如果清除数据后问题仍然存在,可能是 App 本身和你的手机型号或 Android 版本存在兼容性问题。请在 GitHub Issues 中报告

课程提醒不触发

  • 首先确认在"我的"→"课程提醒"中,每日课程汇总和课前提醒的开关都已经打开,并且已经设置了正确的提醒时间
  • Android 12 及以上版本需要用户手动授予"闹钟和提醒"权限才能使用 AlarmManager.setExact() 设置精确到分钟的闹钟。如果权限未开启,App 会自动降级为非精确闹钟——提醒仍然会发送,但可能比设定时间晚几分钟。你可以在系统设置 → 应用 → Sleepy → 权限中检查并授予这个权限
  • 检查手机是否开启了"省电模式"——省电模式会限制后台 App 的活动,包括 AlarmManager 的闹钟触发。同样检查"勿扰模式"——勿扰模式会静默所有通知,闹钟仍然会触发但你听不到声音也看不到横幅
  • 设备重启后所有闹钟会被系统清除。Sleepy 在设备重启后会自动重新注册所有的闹钟(通过监听 BOOT_COMPLETED 系统广播),但这个自动恢复过程可能需要几分钟(取决于系统启动后广播的发送时机)。如果你在重启后长时间没有收到提醒,手动打开一次 App——这个操作会触发 MY_PACKAGE_REPLACED 相关的重新注册逻辑,立即恢复所有提醒

如何备份和恢复课表数据

定期备份你的课表数据是一个好习惯——万一手机丢了、换了新手机、或者需要清除 App 数据,你都能快速恢复。备份步骤:进入"我的""导出课表"→ 选择你要导出的课表(如果有多张)→ App 会生成一个 JSON 文件并弹出系统的分享菜单 → 你可以通过微信、QQ、邮件、云盘等方式把这个文件发送给自己并保存好。恢复步骤:在新手机或重新安装 App 后 → 进入"管理"→"导入课表"→"从文件导入"→ 选择你之前保存的 JSON 文件 → 预览确认 → 选择"另存为新课表"或"替换当前课表"。

报告问题

如果你遇到了本页未能涵盖的问题,请在 GitHub Issues 中创建一个新的 issue。为了让问题能被有效定位和解决,请在报告中包含以下信息:Sleepy 的版本号(在"我的"→"关于"中查看)、你的手机品牌和具体型号、Android 系统版本(在系统设置→关于手机中查看)、问题的详细描述(具体做了什么操作、期望看到什么、实际看到了什么)、以及如果可以的话附带一张截图。请注意不要在任何截图或文字中包含你的学号、姓名、密码等个人隐私信息。