NFR-RES-3 — No rendering while idle on Android, and battery-saver honoured #59

Open
opened 2026-09-19 10:20:55 +00:00 by dtourolle · 0 comments
Owner

On Android the app shall not render continuously when idle; background sync respects metered-connection and battery-saver settings. Untagged, and nothing measures it.

Why

A tablet in a bag with the app in the foreground is the common case after a cull, and a Slint window that redraws every frame is a warm tablet with a flat battery by morning. FR-NC-6's unmetered/charging constraints exist for transfers; this clause is the same discipline for the render loop and for sync scheduling.

Deliverable

  • Confirm and pin the redraw policy: no frame is drawn without a state change (Slint's default) — and no timer, animation or polling keeps one coming. A test that counts frames over an idle interval.
  • Sync and the indexing sweeps read the platform's battery-saver and metered state and hold under either; the job runner already has the queue, this is the gate.
  • The thermal signal: back off the sweeps under onTrimMemory-class pressure or thermal throttling, and say so in the log.

Acceptance

  • Idle frame count over 60 s is zero on the reference tablet
  • Sync and sweeps do not run under battery saver or on a metered network unless the user overrode it
  • TRACES: NFR-RES-3 on the redraw test and the scheduling gate
**On Android the app shall not render continuously when idle; background sync respects metered-connection and battery-saver settings.** Untagged, and nothing measures it. ## Why A tablet in a bag with the app in the foreground is the common case after a cull, and a Slint window that redraws every frame is a warm tablet with a flat battery by morning. FR-NC-6's unmetered/charging constraints exist for transfers; this clause is the same discipline for the render loop and for sync scheduling. ## Deliverable - Confirm and pin the redraw policy: no frame is drawn without a state change (Slint's default) — and no timer, animation or polling keeps one coming. A test that counts frames over an idle interval. - Sync and the indexing sweeps read the platform's battery-saver and metered state and hold under either; the job runner already has the queue, this is the gate. - The thermal signal: back off the sweeps under `onTrimMemory`-class pressure or thermal throttling, and say so in the log. ## Acceptance - [ ] Idle frame count over 60 s is zero on the reference tablet - [ ] Sync and sweeps do not run under battery saver or on a metered network unless the user overrode it - [ ] `TRACES: NFR-RES-3` on the redraw test and the scheduling gate
dtourolle added the unmet-requirementsize:Mandroidperformance labels 2026-09-19 10:20:55 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dtourolle/DarkRoom#59