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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
onTrimMemory-class pressure or thermal throttling, and say so in the log.Acceptance
TRACES: NFR-RES-3on the redraw test and the scheduling gate