Time Stop

Precision app-time control for Android power users who want policy, telemetry, and enforcement in the same loop.

Android 8.1+ LSPosed API 93+ Version 0.10.14 License GPL-3.0-only

Stock screen-time tools are usually built for reports, daily caps, and focus modes. Time Stop is built for people who want sharper controls: per-app quotas, per-launch timers, weekly allow/block windows, shared group budgets, cooldowns after forced exits, Hook verification, and diagnostics that show what is actually happening inside the target process.

Latest release · LSPosed module page · Obtainium · 中文说明

Current version: 0.10.14

Why Not Just Use Stock Screen Time?

Different Android vendors ship different screen-time features, but the usual model is still broad and UI-driven. Time Stop prefers LSPosed when a current Hook is active and otherwise provides non-root control through accessibility foreground events plus Android usage access.

Dimension Stock screen time Time Stop
Core model Usage reports, daily limits, focus modes Composable enforcement rules for selected apps
Time granularity Mostly daily totals Daily quota + per-launch timer + post-exit cooldown
Schedule logic Commonly fixed focus windows Allow-only or block-during weekly windows, multi-day and overnight aware
Shared budgets Rare or vendor-specific App groups with one shared daily allowance
Enforcement path System blocker or reminder Countdown plus force exit by default, or an optional standalone Time Stop break page
Observability Usually hidden Hook heartbeat, rule source, limit hits, and diagnostic logs
Runtime System feature LSPosed when available, or non-root accessibility + usage access

Time Stop is not a soft "please stop scrolling" timer. It is a small policy engine for app usage: rules, foreground accounting, warning UI, exit execution, statistics, update checks, and field diagnostics all live in one workflow.

Feature Highlights

Capability What it does
Independent app rules Each app keeps its own enabled state, daily quota, per-launch quota, schedule windows, warning style, and cooldown behavior.
App groups and shared allowance Put multiple apps into one group with shared daily, per-launch, schedule, and cooldown rules. Group members run only the group policy; saved personal rules are suspended and resume after removal.
Non-root basic protection Uses a content-blind accessibility service for foreground package changes plus Android usage access for daily calibration. An opt-in enhanced compatibility mode adds package-only content-change events for ROMs that miss normal window events; it still retrieves no nodes, text, input, or notifications and uses no foreground service or continuous polling.
Optional Shizuku enhancement Shizuku only executes a validated force-stop for configured third-party targets. Missing permission, a stopped service, binder failure, or a protected system package falls back to the normal restriction page.
Daily cumulative mode Uses the stronger source for each app: Android system usage when available, or Hook-local foreground accounting, then resets at local midnight.
Per-launch mode Starts a fresh timer when the target app's main process begins a foreground session.
Session planning Optionally asks for a 5, 10, 15, 30, or custom 1–1440 minute plan when the target process first opens. Quick choices and a direct numeric minute field share one compact page, while the fixed footer keeps exit and skip actions visible. Values beyond the earliest remaining timed quota are rejected.
Weekly schedules Supports allow-only and block-during windows across multiple weekdays, including overnight ranges. Schedule blocks cannot be bypassed with the delay action.
Foreground-only accounting Counts only the onResume to onPause phase. Background residency does not burn the quota.
Warning UI Shows a five-second top banner or opt-in full-screen warning matching the selected global color, with an optional one-shot long vibration, an exit action, and layout handling for portrait, landscape, display cutouts, and immersive apps.
Enforcement mode Defaults to closing the task and safe third-party target process. The themed standalone break page uses a 30-second, single-use internal token, offers an exit-to-Home action, and attempts to pause common media. Media-object hooks are installed only when a target process starts in break-page mode, so force-stop and reopen managed apps after switching modes.
Language Supports system-default, Simplified Chinese, and English UI; Hook warnings use the same preference.
Appearance Offers health green, calm blue, and focus purple across management and target-side surfaces, each with follow-system, light, and dark modes.
Delay action Lets the user add 1-60 minutes for normal time limits while keeping schedule blocks strict.
Post-exit cooldown Blocks reopening for 1-1,440 minutes after a daily or per-launch quota event. A group uses one fixed shared cooldown window for all members; repeated openings never refresh its start or inflate limit-hit counts. Schedule denials do not start cooldown.
Group sync loop Grouped foreground apps synchronize usage every 15 seconds without keeping the manager app alive.
Hook and scope status Reads framework and scope state through the optional libxposed service when supported, can request missing scope with framework confirmation, and keeps the current-version Hook heartbeat as the compatibility fallback.
Diagnostics Logs Hook setup, rule reads, timer starts, sync events, stats writes, and limit exits so configuration problems are traceable.
System-app guardrails Third-party apps can have their target process terminated; system apps only have their UI closed.
Updates and feedback Checks GitHub Releases automatically when the manager opens (rate-limited and configurable), actively prompts for a new stable release, uses Android's download manager for APK updates, and offers email diagnostics or QQ group 1009712674 for feedback and beta participation.

Changing a rule resets the Hook-local accumulator for that app, but Android's system usage for the current day remains part of the daily baseline when usage access is granted. That makes rule tweaking visible, not a loophole.

Architecture

flowchart LR
    UI["Compose manager"] --> Repo["Rule repository"]
    Repo --> Provider["Rule ContentProvider"]
    Repo --> Primary["Private authoritative rule store"]
    Primary --> Prefs["LSPosed compatibility mirror"]
    Provider -->|"primary channel"| Hook["Target app process Hook"]
    Provider --> Groups["Group usage aggregation"]
    Groups --> Hook
    Prefs -->|"XSharedPreferences fallback"| Hook
    Hook --> Lifecycle["Activity resume/pause events"]
    Lifecycle --> Timer["Foreground timer"]
    Hook --> SessionPlan["Process-local session plan"]
    SessionPlan -->|"expires"| Exit
    Timer -->|"limit reached"| Exit["Close task stack + exit target process"]
    Timer --> State["Target-local usage state"]
    UI -->|"on-demand query"| UsageStats["Android UsageStatsManager"]
    UsageStats -->|"daily baseline"| Provider
    UI -->|"optional scope query"| XposedService["libxposed service"]
    Accessibility["Accessibility foreground events"] --> Coordinator["Non-root coordinator"]
    UsageStats --> Coordinator
    Coordinator -->|"Hook heartbeat wins"| Hook
    Coordinator -->|"basic fallback"| BreakPage["Time Stop restriction page"]
    Coordinator -->|"optional executor"| Shizuku["Shizuku UserService"]
Loading

Key source files:

  • app/src/main/java/com/liuml/apptimelimiter/MainActivity.kt: Compose UI, app management, group management, statistics, and settings.
  • app/src/main/java/com/liuml/apptimelimiter/data/RuleRepository.kt: rule persistence, global settings, groups, and compatibility exports.
  • app/src/main/java/com/liuml/apptimelimiter/ipc/RuleProvider.kt: controlled IPC for rule reads, diagnostics, statistics, and Hook verification.
  • app/src/main/java/com/liuml/apptimelimiter/statistics/: Android usage-event calculation and module statistics.
  • app/src/main/java/com/liuml/apptimelimiter/xposed/AppTimeLimitHook.kt: lifecycle hooks, timers, group sync, cooldowns, warnings, and exit execution.
  • app/src/main/java/com/liuml/apptimelimiter/nonroot/: accessibility coordination, 30-second sessions, plan overlay, restriction fallback, and restricted Shizuku execution.
  • app/src/main/java/com/liuml/apptimelimiter/core/: pure policy helpers covered by unit tests.
  • xposed-stubs/: compile-time Xposed API signatures; they are not packaged into the APK.

Build

Requirements: JDK 17 and Android SDK 37 (targetSdk remains 35).

.\gradlew.bat testDebugUnitTest lintDebug assembleDebug

If Windows path encoding causes Kotlin or JUnit classpath errors, build from a temporary ASCII drive:

subst T: "<repo absolute path>"
T:
.\gradlew.bat clean testDebugUnitTest lintDebug assembleDebug
subst T: /d

The debug APK is generated at app/build/outputs/apk/debug/app-debug.apk.

Installation

  1. Install the APK, open Time Stop, select target apps, and save rules or groups.
  2. For non-root protection, enable it in Settings and grant the disclosed accessibility service plus usage access. Android manages the service lifecycle; Time Stop adds no foreground service.
  3. Optionally enable Shizuku enhancement and grant its permission. It improves execution only and is not used for timing.
  4. On rooted devices, enable the module in LSPosed and scope controlled apps. Force-stop and reopen targets after scope changes; a current Hook heartbeat automatically takes priority over non-root timing.

Time Stop checks required non-root permissions when the manager opens and when it returns from system settings. Missing accessibility or usage access is reported as inactive protection; missing Shizuku permission is reported separately while the basic restriction-page fallback remains available.

When upgrading from a build that stored its only rule copy in LSPosed's redirected preferences, open Time Stop once while the module is still enabled. This performs a one-time migration to the stable private manager store. After that migration, disabling LSPosed no longer switches the manager UI to a different rule database.

On frameworks that expose the modern service, Time Stop can read scope before the target app is opened and request missing packages through the framework confirmation UI. Older frameworks fall back to the persisted HOOK_READY heartbeat, so "Hook verified" means the target app has successfully loaded this module version before.

Distribution

GitHub Releases

The official APK is published from the LSPosed mirror repository:

https://github.com/Xposed-Modules-Repo/com.liuml.apptimelimiter/releases/latest

Obtainium

Time Stop works with Obtainium by tracking GitHub Releases:

  • App source URL: https://github.com/Xposed-Modules-Repo/com.liuml.apptimelimiter
  • Source type: GitHub Releases
  • APK asset pattern: app-time-limiter-v*.apk

Obtainium is a third-party updater. It does not change Time Stop's protection engine; it only checks the release page and installs the APK selected by the user.

F-Droid

Time Stop is licensed as GPL-3.0-only so it can be submitted to F-Droid-compatible repositories. Packaging metadata is kept in packaging/fdroid/. Until the official F-Droid review is accepted, use GitHub Releases, LSPosed, Obtainium, or a self-hosted F-Droid repository.

Diagnostics

Open Diagnostic Logs from the home screen and check:

  • RULE_SAVED: the manager saved the rule.
  • HOOK_READY: the lifecycle Hook is running in the target process.
  • RULE_READ ... source=provider: the primary rule channel is working.
  • RULE_READ ... source=xsharedpreferences: the compatibility fallback is being used.
  • TIMER_START: foreground timing has started.
  • SESSION_PLAN_PROMPT/STARTED/REPLANNED/SKIPPED/EXPIRED and SESSION_PLAN_PROMPT_INTERRUPTED: lifecycle of the process-local session plan.
  • EXTERNAL_BREAK_PAGE_SHOWN/UPDATED/REMOVED/FAILED: standalone break-page display, rule changes, recovery, and safe-exit fallback.
  • MEDIA_PAUSE_ATTEMPT/MEDIA_PAUSE_FAILED: best-effort pause result for common platform, ExoPlayer/Media3, and web media.
  • REST_CYCLE_RESUMED: a per-launch break ended and a fresh foreground cycle started.
  • GROUP_COOLDOWN_STARTED/REUSED/EXPIRED and QUOTA_INCIDENT_DUPLICATE: shared group cooldown ownership, reuse, expiry, and duplicate suppression.
  • SESSION_PLAN_WAITING_USAGE, SESSION_PLAN_REJECTED_OVER_QUOTA, and SESSION_PLAN_UNAVAILABLE: authoritative usage wait, over-quota rejection, or plan unavailability.
  • SESSION_PLAN_SUPPRESSED_BLOCKED: a schedule, cooldown, or exhausted quota correctly prevented the plan dialog.
  • COOLDOWN_STARTED/COOLDOWN_PERSIST_FAILED: cooldown persistence after a quota limit.
  • LIMIT_REACHED: a configured boundary was reached and exit execution started.
  • PROTECTION_MODE_CHANGED, HOOK_MODE_ACKNOWLEDGED, and PROTECTION_STATUS_DEGRADED: selected-mode changes, Hook mode-generation acknowledgement, and protection-health degradation.
  • NON_ROOT_BREAK_PAGE_START_REQUESTED, NON_ROOT_BREAK_PAGE_START_ACCEPTED, NON_ROOT_BREAK_PAGE_CONFIRMED, and NON_ROOT_BREAK_PAGE_CONFIRM_TIMEOUT: distinguish a launch request, Android accepting it, the page actually gaining foreground focus, and silent vendor-ROM blocking.
  • NON_ROOT_OVERLAY_ADD_REQUESTED, NON_ROOT_OVERLAY_ADD_ACCEPTED, NON_ROOT_OVERLAY_ATTACH_STATE, and NON_ROOT_OVERLAY_ADD_FAILED: capture session-plan overlay window parameters, attachment state, and the full exception type.
  • NON_ROOT_FOREGROUND_SIGNAL, NON_ROOT_FOREGROUND_RECONCILED, and NON_ROOT_FOREGROUND_MISMATCH: record the accepted accessibility source and bounded UsageStats reconciliation before protection UI is shown.
  • NON_ROOT_OVERLAY_DETACHED, NON_ROOT_OVERLAY_REATTACHED, and NON_ROOT_UI_STATE_CHANGED: record bounded session-plan overlay recovery and the single-owner non-root UI state.
  • SHIZUKU_FORCE_STOP and NON_ROOT_HOME_FALLBACK_RESULT: report enhanced force-stop execution and the final foreground state after the Home fallback.

If HOOK_READY never appears in the in-app log, search LSPosed logs for AppTimeLimiter: HOOK_INSTALLED or HOOK_FAILED.

HOOK_INSTALLED and HOOK_READY include the target process bitness and ABI. If neither appears for only a few apps, first check whether those apps are excluded by the Magisk denylist/Zygisk configuration. The Hook uses both the normal Instrumentation lifecycle path and an Activity lifecycle fallback for protected or legacy apps.

The lifecycle Hook remains on the legacy Xposed Framework API. The manager optionally uses libxposed service API 102 for framework, scope, and running-target status without adding a second modern Hook entry; unsupported frameworks automatically retain heartbeat verification.

Known Limitations

  • Non-root protection is self-management, not tamper-resistant parental control. Revoking accessibility or usage access, force-stopping Time Stop, or uninstalling it stops this path.

  • In non-root mode, a per-launch session survives up to 30 seconds away from the target app. Returning within the grace period resumes the same timer and plan; returning later starts a new session.

  • Basic non-root enforcement opens Time Stop's standalone restriction page directly so the target Activity pauses and may resume when the restriction clears. It returns Home only if the page cannot open. The target process remains alive and background media may continue. Shizuku force-stop discards the current page and commonly needs to be restarted after a device reboot.

  • While a persistent non-root restriction remains active, reopening the target from Home immediately revalidates the current rule and restores the restriction page without waiting for the Hook handshake. This marker only accelerates revalidation and cannot override a changed or cleared rule.

  • Non-root mode hides scope, Hook verification, reopen prompts, and historical counter prompts. Accessibility is reported separately as disabled, enabled-but-disconnected, or connected; global permission failures are not repeated as per-app repair errors. LSPosed reads modern service scope directly and treats an in-scope idle app as ready without requiring a heartbeat.

  • Launcher and launcher-folder windows are hard foreground boundaries. They pause the managed session while keeping the 30-second grace period, cancel stale restriction callbacks, and never trigger navigation, overlays, Toasts, or another Home action.

  • The standalone restriction Activity is the non-root enforcement surface because it naturally pauses the target Activity. Accessibility overlays are reserved for the session-plan picker and short warnings: an overlay can block touches but cannot reliably pause media, games, or the target lifecycle.

  • The accessibility service requests no window content and does not read nodes, text, accounts, input, or notifications. Foreground package transitions and local timing or diagnostic data are not uploaded.

  • Session planning is process-local: it is offered once per target process, survives Activity changes in that process, and is cleared when the process ends.

  • A session plan counts only resumed foreground Activity time. Background and screen-off time is paused by design; this feature does not provide background media playback or a wall-clock sleep timer.

  • Session-plan expiry does not add a limit hit or start cooldown. System apps only have their UI closed.

  • A session plan must fit within the earliest remaining app or group timed quota. Longer choices are rejected with the available balance, and exhausted quotas, cooldowns, or blocked schedules can never be bypassed.

  • The standalone break page pauses the target Activity and attempts to pause common MediaPlayer, ExoPlayer/Media3, and web media. Vendor ROMs may ask before opening Time Stop. Custom players, background services, rendering, or game logic may continue; use force-exit mode when execution must stop completely.

  • Rules, statistics, diagnostics, and runtime state are excluded from Android backup and device transfer.

  • Per-launch and group per-launch limits start a fresh cycle after configured cooldown. Daily and group-daily quotas remain hard limits until the daily reset; blocked schedules remain active until the allowed period.

  • While the standalone page is visible, the target Activity is paused, so Hook-local foreground accumulation also pauses. Playback is never force-resumed by the module.

  • Lifecycle tracking uses Instrumentation.callActivityOnResume/Pause with a deduplicated Activity.onResume/onPause fallback across target processes; diagnostics show the process and bitness that host the UI.

  • Already running target apps keep the old Hook after install or upgrade. Force-stop and reopen them to load the new module code.

  • Activities that remain resumed in picture-in-picture or split-screen mode continue to count toward the limit.

  • Multiple resumed apps in the same group synchronize increments every 15 seconds, so concurrent multi-window use can exceed the shared allowance by up to one sync interval.

  • Every group member must still be in LSPosed scope. Compatible frameworks can approve missing scope from Time Stop; older frameworks require manual selection. An unhooked member can count toward shared usage through Android usage stats, but cannot execute its own forced exit.

  • The Hook-local daily fallback is stored in the target app's data area. If that data is cleared while usage access remains granted, Android's system usage can still restore the daily baseline.

  • A short segment before an unexpected crash may not be persisted if onPause is never delivered.

  • Only launchable apps are listed. Packages without launcher entries need future manual package-name configuration.

  • The app list only shows apps in the Android user that hosts the manager. Work-profile or cloned-user instances are not separately controlled yet because rules and statistics are currently keyed by package name.

  • Hook behavior cannot be fully verified across ROMs without a real Root/LSPosed device.

This tool should be used only by the device owner or on explicitly authorized managed devices. Do not install it covertly or use it for unauthorized monitoring.

中文说明

时停

把时间留给真正重要的事。

系统自带的屏幕时间管理通常更侧重查看使用统计、设置每日限额或开启专注模式时停则专注于更精细、可组合的单应用规则:不仅能限制一天总共使用多久,还能限制每次连续打开多久,还能规定每周哪些时段允许或禁止使用,并支持应用分组共享额度与退出后冷却。用户可全局选择 LSPosed、普通保护或普通保护 + Shizuku,所有管控应用统一使用所选链路。

下载最新版本 · LSPosed 模块页面

当前版本:0.10.14

它和系统屏幕时间有什么不同?

不同厂商和 ROM 的系统功能会有所差异,下表以常见的 Android 屏幕时间管理能力作为对比。

对比维度 系统自带屏幕时间 时停
核心定位 查看使用情况、每日限额、专注模式 为指定应用建立可组合的强制使用边界
时间粒度 通常以每天的总时长为主 每日累计 + 单次打开 + 退出后冷却可组合启用
时段规则 常见为专注模式或固定停用时段 支持“仅指定时段允许”与“指定时段禁止”、多星期组合和跨午夜规则
共享额度 很少提供,或强依赖厂商实现 支持多个应用共享同一个每日额度
到达限制后 通常显示系统拦截页或提醒 先倒计时提醒,再关闭任务栈并结束目标应用界面所在进程
生效验证 通常不展示具体执行链路 提供真实 Hook 心跳、规则来源和限制触发诊断日志
运行方式 系统原生,无需 Root 全局互斥选择 LSPosed、普通保护或普通保护 + Shizuku,不自动混合接管

系统自带功能更适合快速了解整体使用习惯;时停更适合希望对某些应用设置更细粒度、更明确、更难随手忽略的使用规则。

时停也不只是一个“到点弹窗”的计时器。它覆盖从规则配置、前台计时、到期提醒和限制执行,到使用统计、Hook 验证、故障诊断、在线更新和问题反馈的完整使用流程。

功能丰富,覆盖完整使用流程

能力 说明
独立应用规则 每个应用分别保存启用状态、时间额度和时段计划,互不影响。
应用分组与统一规则 可为一组应用统一开启共享每日额度、单次打开、可用时段和退出后冷却。组内成员只执行分组规则;已有个人配置会保留但暂停,移出分组后自动恢复。
全局保护模式 设置中三选一:LSPosed、普通保护、普通保护 + Shizuku。模式切换后目标应用需强停并重开,面板通过模式代次确认 Hook 已加载新配置。
非 Root 普通保护 通过无障碍服务感知前台包名,通过系统使用情况访问校准每日累计;可选“增强兼容检测”为漏发普通窗口事件的系统增加包名级内容变化事件,但仍不读取页面节点、文字、输入内容或通知,不启动前台常驻服务,也不持续轮询。
Shizuku 强停模式 Shizuku 只负责在到限后强停已配置的第三方应用,不参与计时;未安装、未授权、服务未运行、Binder 断开或执行失败时自动回退普通限制页,不切换到 LSPosed。
设置内保护状态 设置顶部同时展示所选模式、实际执行链路、明确异常和修复入口;LSPosed 未取得权威证据时显示“等待验证”而不是误报未生效,Shizuku 不可用时明确回退普通保护独立限制页。
应用列表过滤 应用管理默认只显示第三方应用;需要管理系统应用时可手动开启“显示系统应用”。
每日累计限制 为每个应用设置 1-1440 分钟的每日额度;有“使用情况访问权限”时,以 Android 系统时长和 Hook 本地计时的较大值判定,跨零点自动重置。
单次打开限制 每次目标应用主进程启动后重新计时,适合控制一次连续使用的时长。
本次使用计划 可为单个应用开启“打开时制定计划”;同一页面提供 5、10、15、30 分钟快捷选择和 1–1440 分钟数字输入。LSPosed 与非 Root 共用同一界面组件,固定底栏确保退出和跳过按钮始终可见;超过最早剩余额度的选项与输入会被拒绝,最终提交仍再次校验。
每周时段规则 支持“仅指定时段允许”和“指定时段禁止”,可组合多个星期并覆盖跨午夜时段。
精确前台计时 仅统计 Activity 处于前台的时间,应用切到后台后暂停计时。
到期提醒与延时 LSPosed Hook 目标到期前 5 秒可显示与全局颜色主题一致的顶部或全屏倒计时、触发一次长震动,并提供退出应用或临时延长 1-60 分钟;纯非 Root 模式不显示这些 Hook 专属设置,本次计划在结束前 5 秒提供退出或重新计划入口。
限制执行方式 设置页按引擎分别显示有效选项:LSPosed 可选“强制退出”或“独立休息页”;非 Root 普通保护可选“独立限制页”或需要 Shizuku 的“强制退出”。独立页跟随全局颜色和明暗主题并提供退出到桌面的按钮;Shizuku 不可用或执行失败时自动回退限制页。
语言 支持跟随系统、简体中文和 English,管理界面与目标应用内 Hook 提醒使用同一设置。
外观 提供健康绿、宁静蓝、专注紫三套全局颜色,并分别支持跟随系统、浅色和深色;计划弹窗、全屏提醒和独立限制页还可随机显示内置或自定义时间短句。
退出后冷却 每日或单次额度触发限制后,可在 1-1440 分钟内禁止再次打开。分组使用一份固定的共享冷却状态:任一成员触发后,全组看到相同剩余时间;反复打开不会刷新起点或重复统计。禁止时段拒绝不会启动冷却。
使用统计 首页和统计页按需读取 Android UsageStatsManager,根据前台事件计算各应用时长和启动次数;熄屏会清除厂商系统遗漏的旧前台状态,“今日总使用”按所有应用前台区间的并集去重,因此不会因分屏或事件重叠而超过当天已过去的时间。
Hook 与作用域状态 支持的框架可通过 libxposed 服务直接读取作用域并向框架申请补充作用域;旧框架继续使用当前版本 Hook 回传作为兼容验证。
多级规则回退 优先通过受控 Provider 读取规则,并提供 XSharedPreferences 与本地缓存回退,增强不同 ROM 下的可用性。
诊断日志 记录 Hook 安装、规则来源、计时开始与暂停、统计写入和限制触发,方便快速定位配置问题。
系统安全保护 第三方应用到期后结束自身进程;系统应用只关闭界面,不结束系统进程,并记录开机诊断锚点。
个性化设置 可选择顶部或全屏退出提醒、长震动,并控制主题、语言、诊断记录和默认延时时长;修改规则后会重置 Hook 本地累计,系统当日时长仍保留。
隐藏桌面入口 只在可确认 LSPosed 模块设置入口时提供隐藏选项;MainActivity 保留标准模块入口并提供 ADB 恢复。纯非 Root 模式不会显示无效的隐藏开关,旧配置已隐藏时只提供恢复入口。
功能导览与联系 每次打开管理应用时可左右滑动查看主要功能;每个新版本首次运行会依次显示一次内测和自愿捐赠公告。设置与“关于”页支持邮件或 QQ 群 1009712674 反馈,并提供加入内测和软件声明入口。
更新与反馈 默认在打开管理应用时限频检查 GitHub Releases,发现稳定新版后主动提醒;可关闭自动检查,并可调用系统下载管理器更新、通过邮件附带诊断日志反馈问题。

Hook 计时仅覆盖 Activity.onResumeActivity.onPause 的前台阶段,切到后台会暂停。修改规则时会重置该应用的 Hook 本地累计;如果已授权系统使用统计,Android 记录的当日时长仍会参与每日限制,不能通过修改规则清零。

架构

flowchart LR
    UI["Compose 管理端"] --> Repo["规则仓库"]
    Repo --> Provider["规则 ContentProvider"]
    Repo --> Prefs["SharedPreferences 兼容数据"]
    Provider -->|"主通道"| Hook["目标应用主进程 Hook"]
    Provider --> Group["分组成员使用量聚合"]
    Group --> Hook
    Prefs -->|"XSharedPreferences 兜底"| Hook
    Hook --> Lifecycle["Activity 前后台事件"]
    Lifecycle --> Timer["前台计时器"]
    Hook --> SessionPlan["进程内本次使用计划"]
    SessionPlan -->|"到期"| Exit
    Timer -->|"达到限制"| Exit["关闭任务栈 + 结束进程"]
    Timer --> State["目标应用本地累计状态"]
    UI -->|"打开页面时按需查询"| UsageStats["Android UsageStatsManager"]
    UsageStats -->|"系统每日时长"| Provider
    UI -->|"可选作用域查询"| XposedService["libxposed 服务"]
    Accessibility["无障碍前台包事件"] --> Coordinator["非 Root 协调器"]
    UsageStats --> Coordinator
    Coordinator -->|"Hook 心跳优先"| Hook
    Coordinator -->|"普通回退"| BreakPage["时停限制页"]
    Coordinator -->|"可选执行"| Shizuku["Shizuku UserService"]
Loading

主要代码:

  • app/src/main/java/com/liuml/apptimelimiter/MainActivity.kt:Compose 首页、应用管理、分组管理、统计和设置。
  • app/src/main/java/com/liuml/apptimelimiter/data/RuleRepository.kt:规则、全局设置、应用分组与兼容数据持久化。
  • app/src/main/java/com/liuml/apptimelimiter/ipc/RuleProvider.kt:规则读取、统计、诊断和 Hook 验证 IPC。
  • app/src/main/java/com/liuml/apptimelimiter/statistics/:系统使用事件计算和模块统计。
  • app/src/main/java/com/liuml/apptimelimiter/xposed/AppTimeLimitHook.kt:生命周期 Hook、计时、分组同步、冷却、提醒和退出逻辑。
  • app/src/main/java/com/liuml/apptimelimiter/nonroot/:全局模式下的非 Root 会话、无障碍计划浮层、限制页回退与受限 Shizuku 执行。
  • app/src/main/java/com/liuml/apptimelimiter/core/:可单元测试的纯策略代码。
  • xposed-stubs/:只用于编译的传统 Xposed API 签名,不会打包进 APK。

构建

环境要求:JDK 17、Android SDK 37(targetSdk 仍为 35)。

.\gradlew.bat testDebugUnitTest lintDebug assembleDebug

当前工作区路径含中文;如果 Windows 上单元测试报 ClassNotFoundException,可临时映射英文盘符:

subst T: "<你的项目目录>"
T:
.\gradlew.bat clean testDebugUnitTest lintDebug assembleDebug
subst T: /d

调试 APK 输出到 app/build/outputs/apk/debug/app-debug.apk

安装和使用

  1. 安装 APK,打开“时停”,选择目标应用并保存规则或分组。
  2. 在设置中全局选择“LSPosed”“普通保护”或“普通保护 + Shizuku”;所有目标应用统一使用该模式,不会自动切换到另一条链路。
  3. 选择普通保护后,阅读用途披露,启用时停无障碍服务并授予使用情况访问。服务由 Android 管理,不增加前台常驻通知。
  4. 选择 Shizuku 模式时再完成 Shizuku 授权;它只改善到限执行,不参与计时。保护状态与修复入口集中在设置顶部;切换模式后下一次打开目标应用由新模式接管,只有明确加载旧 Hook 或加载失败时才需要单独重开。

时停会在管理界面首次打开及从系统设置返回时检查普通保护权限。无障碍状态区分“未开启”“已开启但服务未连接”和“已连接运行”,并综合系统已启用组件、系统服务列表与服务真实生命周期;无需为了刷新显示而反复开关。使用情况访问缺失时普通保护不会计时;Shizuku 未授权或未运行会单独提示,但基础独立限制页仍可继续工作。

如果从“规则仅保存在 LSPosed 重定向偏好”的旧版本升级,请先保持模块启用并打开一次时停,完成向稳定私有主库的一次性迁移。迁移完成后,再关闭 LSPosed 也不会让管理界面切换到另一份空规则库。

支持现代服务的框架可在目标应用尚未打开时直接显示作用域状态,缺少作用域时可通过框架确认界面申请加入。旧版 LSPosed 会自动回退到 HOOK_READY 心跳验证;此时“Hook 已验证”表示目标应用曾成功加载当前版本。

分发渠道

GitHub Releases

官方 APK 发布在 LSPosed 镜像仓库:

https://github.com/Xposed-Modules-Repo/com.liuml.apptimelimiter/releases/latest

Obtainium

时停可通过 Obtainium 跟踪 GitHub Releases 更新:

  • 应用来源 URL:https://github.com/Xposed-Modules-Repo/com.liuml.apptimelimiter
  • 来源类型:GitHub Releases
  • APK 文件匹配:app-time-limiter-v*.apk

Obtainium 是第三方更新工具,只负责检查 Release 页面并由用户选择安装 APK,不改变时停自身的保护链路。

F-Droid

时停已改为 GPL-3.0-only 授权,可提交到 F-Droid 兼容仓库。打包元数据放在 packaging/fdroid/。在官方 F-Droid 审核通过前,请继续使用 GitHub Releases、LSPosed、Obtainium 或自建 F-Droid 仓库。

诊断日志判断方法

在首页点击“诊断日志”,重点查看以下事件:

  • RULE_SAVED:管理端保存成功,但 Hook 没有进入目标应用;检查 LSPosed 模块开关、目标应用作用域,并强制停止目标应用后重开。
  • HOOK_READY:生命周期 Hook 已经运行。
  • RULE_READ ... source=provider:新版规则通道工作正常。
  • RULE_READ ... source=xsharedpreferences:Provider 不可用,正在走旧兼容通道;这通常是系统包可见性或 ROM 限制。
  • TIMER_START:前台计时已开始,日志会显示剩余秒数。
  • SESSION_PLAN_PROMPT/STARTED/REPLANNED/SKIPPED/EXPIREDSESSION_PLAN_PROMPT_INTERRUPTED:本次使用计划从询问、Activity 交接、开始、重新制定到跳过或到期的完整链路。
  • EXTERNAL_BREAK_PAGE_SHOWN/UPDATED/REMOVED/FAILED:独立休息页显示、规则变化、解除或启动失败后回退退出。
  • MEDIA_PAUSE_ATTEMPT/MEDIA_PAUSE_FAILED:常见系统播放器、ExoPlayer/Media3 与网页媒体的尽力暂停结果。
  • REST_CYCLE_RESUMED:单次额度冷静结束,已开始新的前台使用轮次。
  • GROUP_COOLDOWN_STARTED/REUSED/EXPIREDQUOTA_INCIDENT_DUPLICATE:分组共享冷却的认领、复用、到期及重复事件去重。
  • SESSION_PLAN_WAITING_USAGESESSION_PLAN_REJECTED_OVER_QUOTASESSION_PLAN_UNAVAILABLE:等待权威用量、超过剩余额度被拒绝,或因规则变化、额度耗尽而不可制定计划的链路。
  • SESSION_PLAN_SUPPRESSED_BLOCKED:禁止时段、冷却或额度耗尽正确阻止了计划弹窗。
  • COOLDOWN_STARTED/COOLDOWN_PERSIST_FAILED:额度限制后的冷却起点保存结果。
  • LIMIT_REACHED:限制已达到,代码已发出关闭任务栈和结束进程操作。
  • PROTECTION_MODE_TRANSITION_STARTED/COMPLETEDHOOK_UI_CANCELLED_BY_MODEPROTECTION_EFFECTIVE_STATE_CHANGED:模式切换、旧 Hook UI 取消和实际执行状态变化。
  • PERMISSION_REPAIR_PROMPT_*:权限提醒展示、72 小时冷却、同类问题压制及修复动作。
  • BREAK_PAGE_COMPATIBILITY_REQUIREDOEM_COMPATIBILITY_SETTINGS_*:独立限制页被厂商系统拦截及兼容设置跳转结果。
  • NON_ROOT_BREAK_PAGE_START_REQUESTEDNON_ROOT_BREAK_PAGE_START_ACCEPTEDNON_ROOT_BREAK_PAGE_CONFIRMEDNON_ROOT_BREAK_PAGE_CONFIRM_TIMEOUT:区分限制页请求、系统接受启动、真正获得前台焦点和厂商系统静默拦截。
  • NON_ROOT_RESTRICTION_REENTRYNON_ROOT_RESTRICTION_STATE_PERSIST_FAILED:记录返回目标应用时的限制快速复核,以及复入标记写入失败。
  • NON_ROOT_OVERLAY_ADD_REQUESTEDNON_ROOT_OVERLAY_ADD_ACCEPTEDNON_ROOT_OVERLAY_ATTACH_STATENON_ROOT_OVERLAY_ADD_FAILED:记录本次计划浮层的窗口类型、flags、附着状态和完整异常类型。
  • NON_ROOT_FOREGROUND_SIGNALNON_ROOT_FOREGROUND_RECONCILEDNON_ROOT_FOREGROUND_MISMATCH:记录无障碍前台信号来源,以及展示管控界面前的一次性 UsageStats 纠偏结果。
  • NON_ROOT_OVERLAY_DETACHEDNON_ROOT_OVERLAY_REATTACHEDNON_ROOT_UI_STATE_CHANGED:记录计划浮层异常脱离后的有界恢复和非 Root 界面单实例状态。
  • SHIZUKU_FORCE_STOPNON_ROOT_HOME_FALLBACK_RESULT:记录增强强停结果,以及限制页失败后返回桌面的最终前台状态。

如果应用内日志完全没有 HOOK_READY,还可以在 LSPosed 日志中搜索 AppTimeLimiter: HOOK_INSTALLEDHOOK_FAILED

HOOK_INSTALLEDHOOK_READY 会记录目标进程位数和 ABI。若只有少数应用完全没有这两类日志,应先检查它们是否被 Magisk 排除列表或 Zygisk 配置排除。模块同时保留常规 Instrumentation 生命周期入口和面向旧版、加固应用的 Activity 生命周期兜底。

生命周期 Hook 继续使用传统 Xposed Framework API。管理端可选使用 libxposed service API 102 读取框架、作用域与运行目标状态,不增加第二个现代 Hook 入口;不支持服务的框架会自动回退心跳验证。

已知限制

  • 非 Root 普通保护属于自我时间管理,不是不可绕过的家长控制。关闭无障碍或使用情况访问、强停或卸载时停后,这条保护链路会停止。

  • 非 Root 的“单次打开”按前台会话计算:离开目标应用 30 秒内返回会继续同一单次计时与计划,超过 30 秒再返回会建立新会话。

  • 普通保护到限后直接显示独立限制页,让目标 Activity 自然暂停;条件解除后关闭限制页并尝试恢复原内容,只有限制页启动失败时才返回桌面。目标进程不会被结束,后台音乐可能继续。限制页使用独立任务栈,不会阻止用户从桌面打开时停管理界面。Shizuku 可强停已配置的第三方应用,但会丢失当前页面,且非 Root Shizuku 通常需要在重启后重新启动。

  • 非 Root 的持续限制生效后,从限制页回桌面再打开目标应用会立即复核当前规则并恢复限制页,不再等待 Hook 握手。持久标记只用于加速复核,不能覆盖已经解除或修改的规则。

  • 非 Root 模式不显示作用域、Hook 验证、强停重开或旧计数提示;全局权限异常只显示一次。LSPosed 模式直接使用 API 102 作用域结果,应用已在作用域但尚未启动时同样视为就绪,只在明确缺少作用域或当前运行目标异常时显示修复提示。

  • 桌面、桌面文件夹和最近任务不会触发限制动作。离开目标应用后前台计时暂停并保留30秒会话宽限;旧限制页确认、计划浮层和返回桌面回调会随前台代次变化立即失效。

  • 部分厂商系统会遗漏 Activity 暂停事件。统计器在熄屏时清除旧前台状态,亮屏后等待新的前台事件;这可避免多个应用重复累计同一批亮屏时间,但厂商事件本身缺失时仍可能出现少量误差。

  • 非 Root 正式限制界面采用独立 Activity,因为它能让目标 Activity 自然进入暂停;无障碍悬浮层只用于本次计划选择和短提示。悬浮层虽能拦截触摸,但不能可靠暂停播放器、游戏引擎或目标生命周期,因此不作为到限限制页。

  • 无障碍服务不读取窗口内容、页面节点、文字、账号、输入内容或通知;前台包变化、本地计时和诊断数据不会上传。

  • “增强兼容检测”默认关闭;开启后只使用内容变化事件携带的包名,并对模糊信号进行一次性 UsageStats 校验,canRetrieveWindowContent 始终保持关闭。

  • 本次使用计划只保存在目标进程内:每个目标进程首次打开时询问一次,应用内页面切换或短暂切后台不会重复询问,进程结束后自动清除。

  • 计划只计算 Activity 处于 Resume 的前台时间;切后台和息屏会暂停,不提供后台媒体播放或真实时间睡眠定时能力。

  • 计划到期不增加限制触发次数,也不启动冷却;系统应用到期时只关闭界面。

  • 本次计划只能在现有自由额度内制定;所选时长超过应用或分组中最早到期的剩余额度时会被拒绝并提示选择更短时长。额度已耗尽、处于冷却或禁止时段时也不能通过计划绕过。

  • 独立休息页会让目标 Activity 进入暂停,并尽力暂停常见 MediaPlayer、ExoPlayer/Media3 与网页媒体。部分系统可能先询问是否允许打开时停;自研播放器、后台服务、渲染或游戏引擎仍可能继续,需要彻底停止运行时请使用“强制退出”。

  • 单次和分组单次额度配合冷却时,冷静结束后会清零当前轮次并继续使用;每日和分组每日额度仍限制到次日重置,禁止时段仍限制到允许时间。

  • 独立休息页显示时目标 Activity 已暂停,因此 Hook 本地前台累计也暂停;模块不会在休息结束后强制恢复播放。

  • 规则、统计、诊断和运行状态不参与 Android 系统备份或设备迁移。

  • 生命周期计时使用 Instrumentation.callActivityOnResume/Pause 主入口和去重后的 Activity.onResume/onPause 兜底,并覆盖目标包的各进程;日志会显示实际承载界面的进程名与位数。

  • 安装或升级模块后,已经运行的目标应用仍保留旧版 Hook;必须强制停止目标应用再打开。只有当前运行状态明确异常时,应用列表或首页才会提示处理。

  • 画中画、分屏状态下,只要 Activity 保持 Resume 就会继续计时。

  • 同一分组的多个应用在分屏中同时 Resume 时,目标进程每 15 秒同步一次分组增量;共享额度可能有不超过一个同步周期的并发误差。

  • 分组成员仍必须位于 LSPosed 作用域;支持现代服务的框架可在时停中确认申请,旧框架仍需手动勾选。未 Hook 的成员会被系统统计计入共享额度,但自身无法执行强制退出。

  • 每日累计的本地兜底状态保存在目标应用数据区;清除目标应用数据后,如已授予“使用情况访问权限”,系统当日时长仍会重新参与限制判定。

  • 目标应用或系统崩溃时,最后一个尚未触发 onPause 的短时间片可能没有持久化。

  • 应用列表只查询带 Launcher 入口的软件;没有桌面入口的包暂不显示,需要在后续版本增加手动包名配置。

  • 应用列表只显示管理端所在 Android 用户中的应用,其他用户/工作资料中的双开实例会被隐藏。LSPosed 的作用域以“包名 + 用户 ID”区分实例,而当前规则与统计仅以包名为键,因此暂不提供跨用户双开管控。

  • 未连接真实 Root/LSPosed 设备时,只能完成编译、单元测试和 APK 结构校验,不能验证不同 ROM 的 Hook 行为。

本工具应仅用于设备所有者本人或已明确授权的受管设备,不应隐蔽安装或用于未经同意的监控。

软件许可与版权

时停是采用 GPL-3.0-only 授权的自由软件。你可以在 GNU General Public License 第 3 版的条款下使用、学习、修改和再分发本项目。完整条款见 LICENSE,第三方组件仍分别遵循其原有许可证。

Releases

8/9/2026, 11:54:23 AM

English

Time Stop 0.10.14 is a major protection-engine update. It adds a non-root protection path while keeping LSPosed/Xposed as the strongest mode for rooted devices.

What's New

  • Global protection mode selector: choose one active mode for all controlled apps: XPOSED, ACCESSIBILITY, or ACCESSIBILITY_SHIZUKU.
  • Non-root Accessibility protection: detects foreground app changes through package-level accessibility events without reading window content, text, or input nodes.
  • Optional Shizuku execution enhancement: in ACCESSIBILITY_SHIZUKU mode, eligible third-party target apps can be force-stopped through a restricted Shizuku UserService; unavailable or failed Shizuku execution falls back to the normal limit page.
  • Non-root session engine: supports per-launch timing, 30-second return grace, screen-off pause, session-plan overlays, limit pages, cooldowns, schedules, and group rules.
  • Protection status and repair panel: shows the active protection owner and missing prerequisites for LSPosed scope, Accessibility, Usage Stats, and Shizuku.
  • Stable private rule store: manager rules now use rules_manager as the authoritative private store, while rules remains the LSPosed/XSharedPreferences mirror.
  • Theme and time-quote delivery to target UI: session prompts, full-screen warnings, top warnings, and break pages can read the configured color theme and one-time quote through the rule channel.
  • Shared session-plan UI: target prompts and in-app controls reuse the same quick choices plus 1-1440 minute numeric input.
  • Automatic update policy and version announcement support.
  • Expanded diagnostics, event throttling, package-name validation, usage-summary merging, and focused policy tests for the new protection engine.

Fixes

  • Prevent LSPosed and non-root engines from running as a mixed automatic takeover path; switching modes now cancels or disables the inactive engine state.
  • Fix stale or redirected rule storage causing the manager UI to read a different configuration from the Hook mirror.
  • Improve LSPosed scope presentation: API 102 service scope is treated as authoritative when available, and service disconnects no longer falsely report apps as missing from scope.
  • Improve non-root foreground boundaries so Home/launcher transitions pause target sessions and do not trigger limit UI on the desktop.
  • Improve non-root plan overlay retry behavior so failed attachment can retry only within the same foreground package/session and stops after foreground changes or user dismissal.
  • Improve session-plan interruption and duration handling, including elapsed-realtime foreground timing and screen-off pause behavior.
  • Harden break-page content handling so target apps cannot directly supply trusted title/body text.
  • Remove the previous donation prompt flow from the app code path.

Upgrade Note

After installing this version or changing LSPosed scope, force-stop and reopen controlled target apps so the selected protection engine and current rule generation take effect.

中文

时停 0.10.14 是一次较大的保护引擎更新:新增非 Root 管控链路,同时保留 Root/LSPosed 环境下最强的 Xposed 模式。

新增功能

  • 全局保护模式选择:所有受控应用统一使用一种模式:XPOSEDACCESSIBILITYACCESSIBILITY_SHIZUKU
  • 非 Root 无障碍管控:通过包名级无障碍事件识别前台应用,不读取窗口内容、文字或输入节点。
  • 可选 Shizuku 执行增强:在 ACCESSIBILITY_SHIZUKU 模式下,可对符合条件的第三方目标应用执行受限强停;Shizuku 不可用、未授权、断连或失败时回退普通限制页。
  • 非 Root 会话引擎:支持单次打开计时、30 秒返回宽限、息屏暂停、本次计划浮层、限制页、冷却、时段和分组规则。
  • 保护状态与修复面板:展示当前保护链路,以及 LSPosed 作用域、无障碍、使用情况访问、Shizuku 等缺失项。
  • 稳定私有规则主库:管理端规则以 rules_manager 为权威私有存储,rules 仅作为 LSPosed/XSharedPreferences 镜像。
  • 目标端主题与时间短句:计划弹窗、全屏提醒、顶部提醒和独立限制页可通过规则通道读取颜色主题与单次短句。
  • 统一本次计划组件:目标端提示和应用内设置复用“快捷选项 + 1-1440 分钟数字输入”。
  • 新增自动更新策略与版本公告支持。
  • 扩展诊断限流、包名校验、使用统计合并,以及保护引擎相关策略测试。

修复

  • 避免 LSPosed 与非 Root 引擎自动混合接管;切换模式时会取消或停用另一条链路的状态。
  • 修复 LSPosed 重定向规则存储可能导致管理界面与 Hook 镜像读取不同配置的问题。
  • 改进 LSPosed 作用域展示:API 102 服务可用时以 service.scope 为准,服务断连时不再误报未加入作用域。
  • 改进非 Root 前台边界,进入桌面/启动器时暂停目标会话,且不会在桌面触发限制页或浮层。
  • 改进非 Root 计划浮层重试逻辑,仅允许同一前台包、同一会话内有界重试,并在前台变化或用户关闭后停止。
  • 改进本次计划中断与时长处理,使用 elapsedRealtime 前台计时并支持息屏暂停。
  • 加固独立限制页内容来源,避免目标应用直接伪造可信标题或正文。
  • 移除旧的捐助提示流程。

升级提示

安装本版本或调整 LSPosed 作用域后,请强制停止并重新打开受控目标应用,让所选保护引擎与当前规则代次生效。

Assets

1

7/25/2026, 2:53:02 PM

English

Time Stop 0.9.6 focuses on rule-state cleanup, upgrade safety, and clearer diagnostics after app data or module updates.

What's New

  • Added a rule-set generation marker so the manager, Provider, and target-process Hook can agree on the newest rule snapshot.
  • Added startup handling for legacy world-readable rule storage, allowing existing configurations to be adopted safely on upgrade.
  • Added clearer group-rule and setup-guide text in English, including more dynamic UI translations.

Fixes

  • Fixed stale rule snapshots that could survive Android app-data clearing through redirected/shared rule storage.
  • Fixed target-process local caches preferring older rules when the manager has already advanced the rule-set generation.
  • Fixed usage statistics warnings so they only ask users to restart target apps when Hook counters actually came from an older module build.
  • Improved localization for group rules, setup guidance, shared allowance text, and status messages.

Upgrade Note

After installing this update or changing LSPosed scope, force-stop and reopen each controlled target app so it loads the new Hook code and rule generation.

中文

时停 0.9.6 主要改进规则状态清理、升级安全性,以及清除应用数据或升级模块后的诊断提示。

新增

  • 新增规则集代次标记,让管理端、Provider 与目标进程 Hook 能识别最新规则快照。
  • 新增旧版世界可读规则存储的启动接管逻辑,升级时可安全保留已有配置。
  • 补充分组规则与引导页的英文文本,并增强动态 UI 文案翻译。

修复

  • 修复 Android 清除应用数据后,重定向/共享规则存储中旧规则仍可能残留并继续生效的问题。
  • 修复目标进程本地缓存可能优先使用旧规则快照的问题。
  • 修复统计页 Hook 计数提示过于宽泛的问题,仅在目标应用仍上报旧版 Hook 计数时提示重启。
  • 改进分组规则、使用引导、共享额度和状态信息的本地化文案。

升级提示

安装本版本或调整 LSPosed 作用域后,请强制停止并重新打开受管控目标应用,让新版 Hook 与规则代次进入目标进程。

Assets

1

7/24/2026, 11:33:52 AM

English

Time Stop 0.9.5 adds a standalone break-page enforcement mode and improves framework visibility, group cooldown behavior, and session-plan stability.

What's New

  • Standalone break page: optional EXTERNAL_BREAK_PAGE opens Time Stop's own opaque page instead of immediately force-exiting, using a 30-second single-use internal token. If the token or page launch fails, the module falls back to safe force exit.
  • Best-effort media pause: when a target process starts in break-page mode, the Hook tracks common MediaPlayer, ExoPlayer/Media3, and WebView media objects and attempts to pause them before showing the break page.
  • libxposed service status: on compatible LSPosed/API 102 frameworks, the manager can read framework, scope, and running-target status and request missing scope; older frameworks still use Hook heartbeat verification.
  • Group-only policy: apps inside a group now run the group policy while saved personal rules are suspended and restored after removal.
  • Shared group cooldown: group daily/per-launch quota exits claim one fixed cooldown window by group ID, reused by every member without refreshing on repeated opens or Activity changes.
  • Backup exclusion: rules, statistics, diagnostics, and runtime token state are excluded from Android backup/device transfer.

Fixes

  • Prevent the session-plan prompt from appearing again during Activity switches, rotation, brief backgrounding, or rule refresh by delaying the first prompt and invalidating stale callbacks by generation.
  • Keep LSPosed module settings resolvable while hiding only the launcher icon.
  • Improve duplicate quota/cooldown diagnostics and duplicate limit-hit suppression.

Upgrade Note

After installing the update or changing LSPosed scope, force-stop and reopen each target app so it loads the new Hook code. If you switch to break-page mode, target apps also need a restart for media hooks to be installed. QQ group: 1009712674.

中文

时停 0.9.5 新增独立休息页限制方式,并改进框架/作用域状态、分组冷却、本次计划弹窗稳定性和数据备份策略。

新功能

  • 独立休息页:可选 EXTERNAL_BREAK_PAGE,限制触发后打开时停自己的不透明休息页,而不是立刻强制退出;页面通过 30 秒单次内部令牌启动,令牌或页面启动失败会回退安全退出。
  • 常见媒体尽力暂停:目标进程以休息页模式启动时,Hook 会跟踪 MediaPlayer、ExoPlayer/Media3 和 WebView 音视频对象,切页前尽力暂停。
  • libxposed 服务状态:兼容 LSPosed/API 102 时,管理端可读取框架、作用域和运行目标状态,并请求补充作用域;旧框架继续使用 Hook 心跳验证。
  • 分组统一规则:组内应用只执行分组规则,已有个人规则保留但暂停,移出分组后恢复。
  • 共享分组冷却:分组每日/单次额度触发后按 groupId 认领固定冷却窗口,所有成员复用,重复打开或切 Activity 不刷新起点。
  • 备份排除:规则、统计、诊断和运行时令牌排除 Android 云备份/设备迁移。

修复

  • 本次使用计划首次弹窗延迟显示并用代次失效旧回调,避免进入应用后切换 Activity、旋转、短暂切后台或规则刷新时重复弹出。
  • 隐藏桌面图标时只隐藏 Launcher 入口,仍保证 LSPosed 模块设置入口可解析。
  • 改进重复额度/冷却诊断和限制触发去重。

升级提示

安装升级包或调整 LSPosed 作用域后,需要强制停止并重新打开目标应用,让新版 Hook 进入目标进程。切换到休息页模式后,也需要重启目标应用以安装媒体 Hook。QQ群:1009712674

Assets

1

7/23/2026, 5:35:18 PM

English

Time Stop 0.9.4 is an urgent launcher-entry fix. It keeps the module settings entry available even when the launcher icon is hidden, so users can still reopen configuration from LSPosed or Android app info.

What's Fixed

  • Hiding the launcher icon now disables only LauncherAlias.
  • The module settings alias remains enabled for LSPosed and Android app-info settings entry points.
  • The recovery command now re-enables the launcher alias before opening the main activity.
  • README now includes the feedback and beta QQ group: 1009712674.

Upgrade Note

After installing the update or changing LSPosed scope, force-stop and reopen each target app so it loads the new Hook code.

中文

时停 0.9.4 是一个紧急入口修复版:隐藏桌面图标后,仍保留模块设置入口,避免无法从 LSPosed 或系统应用信息重新进入配置页面。

修复内容

  • 隐藏桌面图标时只禁用 LauncherAlias
  • 保持模块设置 alias 启用,LSPosed 与系统应用信息中的设置入口仍可打开。
  • ADB 恢复命令会先重新启用桌面入口,再打开主界面。
  • README 已补充反馈与内测 QQ 群:1009712674

升级提示

安装升级包或调整 LSPosed 作用域后,需要强制停止并重新打开目标应用,让新版 Hook 进入目标进程。

Assets

1

7/23/2026, 4:40:20 AM

English

Time Stop 0.9.3 adds session planning and rounds out the rule system for app groups. It also improves localization, warning feedback, diagnostics, and project licensing clarity.

What's New

  • Session planning: optionally ask for a 5, 10, 15, 30, or custom 1-1,440 minute plan when a controlled target process first opens. The plan counts foreground time only, pauses in the background or when the screen is off, and can be skipped or replanned.
  • Quota-safe session plans: a plan cannot exceed the earliest remaining app or group timed quota. Longer choices are rejected with the available balance; exhausted quotas, cooldowns, and blocked schedules cannot be bypassed.
  • Richer group rules: groups can independently enable shared daily allowance, per-launch limits, weekly schedules, and cooldowns. App rules and group rules run in parallel, and the first condition wins.
  • Member-scoped group cooldown: group cooldown applies only to the member app that was forced to exit. If app and group cooldowns are both enabled, the longer duration is used for that member.
  • Schedule intersection: app and group schedules must both allow usage. Blocked schedule windows keep a stable next-available time and do not start cooldown.
  • Language switching: supports system default, Simplified Chinese, and English for the manager UI and Hook-side warnings.
  • Warning vibration: optional one-shot long vibration for limit warnings, executed through the module provider rather than relying on target-app permissions.
  • Diagnostics and support: Hook logs now include process bitness and ABI, feedback supports email diagnostics and QQ group contact, and the repository now includes a license/copyright notice.

Upgrade Note

After installing the update or changing LSPosed scope, force-stop and reopen each target app so it loads the new Hook code.

中文

时停 0.9.3 新增“本次使用计划”,并补齐应用分组的统一规则能力;同时改进语言切换、提醒反馈、诊断信息和软件许可声明。

新功能

  • 本次使用计划:受控应用目标进程首次打开时,可选择 5、10、15、30 分钟或自定义 1-1440 分钟。计划只计算前台时间,切后台或息屏会暂停,也可以跳过或重新制定。
  • 计划不绕过额度:计划时长不能超过应用或分组中最早到期的剩余额度;超过会提示可用余额并拒绝。额度已耗尽、冷却中或禁止时段都不能通过计划绕过。
  • 更完整的分组规则:分组可独立启用共享每日额度、单次打开限制、每周时段和退出后冷却。应用规则与分组规则并行生效,任一条件先触发即执行。
  • 按成员保存分组冷却:分组冷却只锁定本次被强制退出的成员应用;应用和分组冷却同时开启时,对该成员采用较长时长。
  • 应用与分组时段取交集:必须同时允许才可使用;禁止时段保持稳定的下次可用时间,且不会启动冷却。
  • 语言切换:支持跟随系统、简体中文和 English,管理界面与目标应用内 Hook 提醒使用同一语言设置。
  • 到期长震动:可选一次性长震动提醒,由模块 Provider 安全执行,不依赖目标应用自身权限。
  • 诊断与支持:Hook 日志增加进程位数和 ABI,反馈支持邮件诊断与 QQ 群联系,仓库新增软件许可与版权声明。

升级提示

安装升级包或调整 LSPosed 作用域后,需要强制停止并重新打开目标应用,让新版 Hook 进入目标进程。

Assets

1

7/21/2026, 4:32:30 PM

English

Time Stop 0.9.2 focuses on stronger rule composition and more transparent enforcement. This release adds shared app budgets, improves how target processes report Hook state, and gives users a clearer warning path before a limit is enforced.

What's New

  • App groups with shared daily allowance: multiple apps can share one 1-1,440 minute daily budget. App-level daily, per-launch, and schedule rules still run at the same time, and whichever limit is reached first takes effect.
  • Group usage synchronization: grouped foreground apps report usage every 15 seconds, so shared allowances continue to work without keeping the manager app alive.
  • Optional full-screen limit warning: the existing top countdown remains available, and a stronger full-screen warning can now be enabled in settings.
  • Per-app Hook verification: the manager tracks current-version Hook reports for each controlled app and warns when a newly controlled app or group member has not loaded the module yet.
  • More reliable daily accounting: daily and group usage use the stronger value between Android usage stats and Hook-local foreground time for each app.
  • Multi-window aware group behavior: split-screen or picture-in-picture usage is accounted for when activities remain resumed, with the documented 15-second sync interval.

Upgrade Note

After installing the update or changing LSPosed scope, force-stop and reopen each target app so it loads the new Hook code.

中文

时停 0.9.2 主要增强规则组合和执行可见性:新增应用分组共享额度,改进目标进程 Hook 回传状态,并提供更明确的到期提醒方式。

新功能

  • 应用分组与共享每日额度:多个应用可以共用 1-1440 分钟每日额度;应用自身的每日、单次和时段规则仍同时生效,任一限制先到即执行。
  • 分组用量同步:分组成员在前台运行时每 15 秒同步一次用量,不依赖管理端后台常驻。
  • 可选全屏到期提醒:保留原有顶部倒计时提醒,同时可在设置中启用更强提示感的全屏提醒。
  • 按应用验证 Hook 状态:管理端按受控应用记录当前版本 Hook 回传;新启用规则或分组成员未加载模块时会及时提示。
  • 更可靠的每日统计:每日和分组用量会按应用取 Android 系统统计与 Hook 本地前台计时的较大值。
  • 适配多窗口使用场景:分屏或画中画中 Activity 保持 Resume 时会继续计时,分组共享额度按 15 秒同步周期处理。

升级提示

安装升级包或调整 LSPosed 作用域后,需要强制停止并重新打开目标应用,让新版 Hook 进入目标进程。

Assets

1

7/19/2026, 6:24:29 PM

更新内容

  • 新增强制退出后的冷却期,可设置 1–1440 分钟,重复打开不会刷新冷却起点或重复计数。
  • 新增非模态圆角顶部提醒,适配横竖屏、刘海/挖孔及沉浸式应用。
  • 每日额度综合 Android 系统统计与 Hook 本地前台累计,统计与跨零点处理更可靠。
  • 应用列表默认展示第三方应用,可按需显示系统应用;系统应用触发限制时仅关闭界面,不结束系统进程。
  • 增强使用统计、Hook 状态检测、诊断日志与跨进程 IPC 校验。
  • 更新检查改为读取 LSPosed 官方模块仓库,并兼容 16-0.9.1 标签格式。

安装

在 LSPosed 中安装 APK、启用模块并选择需要管控的应用作用域;修改模块或作用域后,请强停并重新打开目标应用。

最低 Android 8.1(API 27),本版本号为 0.9.1(versionCode 16)。

Assets

1

7/18/2026, 3:01:04 PM

比系统屏幕时间更精细的应用使用边界:每日额度、单次时长和每周时段可独立或组合生效。

主要更新

  • 全新首页与底部导航,集中展示 Hook 状态、已管控应用数和今日使用时长。
  • 新增按需读取的使用统计、启动次数与限制触发次数,不依赖后台常驻轮询。
  • 支持每日累计、单次打开、允许/禁止时段、多星期组合和跨午夜规则。
  • 到期前倒计时提醒,可配置临时延时;时段禁用规则不能被延时绕过。
  • 新增 Hook 心跳验证、诊断日志和多级规则读取回退,便于确认模块是否真实生效。
  • 支持隐藏桌面入口,并可通过 LSPosed 模块页或深链恢复设置。
  • 更新自适应与单色图标,最低 Xposed API 调整为 93。

需要 Android 8.1+、Root 及 LSPosed。

Assets

1

0.6.0

Stable

7/17/2026, 8:18:17 AM

  • 为指定应用设置每日累计和单次前台使用时长。
  • 支持每周可用/禁用时段与跨午夜规则。
  • 到达限制后提醒并退出目标应用。
  • 包名:com.liuml.apptimelimiter
  • versionCode:7

Assets

1