Skip to content

fix(wallpaper): improve setting reliability - #127

Merged
libhide merged 4 commits into
developfrom
fix/wallpaper-reliability
Aug 15, 2026
Merged

fix(wallpaper): improve setting reliability#127
libhide merged 4 commits into
developfrom
fix/wallpaper-reliability

Conversation

@libhide

@libhide libhide commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Summary

  • stream wallpaper downloads to unique temporary files instead of decoding full-size bitmaps
  • preserve the active wallpaper when refresh or persistence fails
  • move automatic wallpaper setting behind an injected IO-safe WallpaperSetter
  • guard unsupported and policy-disabled wallpaper operations
  • remove unsafe wallpaper state access and harden the system crop flow
  • sample notification artwork to reduce memory pressure
  • preserve coroutine cancellation and add a dedicated FileProvider

Verification

  • ./gradlew clean :app:assembleDebug spotlessCheck --warning-mode all
  • ./gradlew :app:lintDebug

Manual testing

See the PR conversation/checklist provided separately.

@libhide

libhide commented Aug 15, 2026

Copy link
Copy Markdown
Owner Author

Manual test checklist

Core refresh and persistence

  • Launch with an existing wallpaper and press Refresh; the new image loads without a crash.
  • Enable automatic setting, press Refresh, and verify the home-screen wallpaper changes and the success message appears.
  • Disable automatic setting, press Refresh, and verify the in-app image changes but the device wallpaper does not.
  • Force-stop and reopen the app after a successful refresh; verify the same image is restored.

Failure recovery

  • Enable airplane mode, press Refresh, and verify the existing image remains usable and the app does not crash.
  • Restore connectivity and refresh again; verify recovery without clearing app data.
  • Tap Refresh two or three times quickly; verify the final image remains valid and can still be set.

Manual crop flow

  • Press the Set Wallpaper button and verify the system crop/picker opens.
  • Complete the picker and verify the wallpaper is applied.
  • Open it again and cancel; verify the app resumes normally.
  • If available, repeat on a second OEM/device because picker behavior is vendor-specific.

Notifications/background refresh

  • Grant notification permission and trigger RefreshWallpaperWorker using Android Studio Background Task Inspector (or wait for its interval).
  • Verify the rich notification appears with thumbnail and expanded artwork.
  • Tap it and verify the app opens with the downloaded wallpaper available.
  • Deny notification permission and trigger the worker again; verify there is no notification or crash.

Device restrictions and memory

  • If available, test under a work profile/device policy that disallows wallpaper changes; expect an error message rather than a crash.
  • Repeatedly refresh on a high-resolution device while watching Memory Profiler; memory should not spike from decoding the full raw wallpaper.

Automatic setting now explicitly targets the home-screen wallpaper. Lock-screen behavior can still vary when an OEM links lock and system wallpapers.

@libhide
libhide merged commit e76c70c into develop Aug 15, 2026
1 check passed
@libhide
libhide deleted the fix/wallpaper-reliability branch August 15, 2026 10:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant