Skip to content

feat: implement pocket mode exclusions and active app checks - #563

Open
Mudit200408 wants to merge 2 commits into
sameerasw:developfrom
Mudit200408:feat-pocket-mode
Open

feat: implement pocket mode exclusions and active app checks#563
Mudit200408 wants to merge 2 commits into
sameerasw:developfrom
Mudit200408:feat-pocket-mode

Conversation

@Mudit200408

@Mudit200408 Mudit200408 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

No description provided.

- Improve the app detection and also filter system noise
@sameerasw

Copy link
Copy Markdown
Owner

Hi! Can you take a look at these concerns and verify?

Potential Issues & Suggestions

1. IPC / Main Thread Blocking in isAppBypassedForPocketMode()

  • Location: ScreenOffAccessibilityService.kt
  • Issue: isAppBypassedForPocketMode() is called directly inside onSensorChanged() on every single proximity and light sensor event.
  • Detail: Inside isAppBypassedForPocketMode(), it opens SharedPreferences (getSharedPreferences(...)), checks UsageStatsManager.queryEvents(), calls rootInActiveWindow (Accessibility IPC), checks active media sessions via MediaSessionManager, and queries PackageManager.
  • Risk: Proximity/Light sensors can fire dozens of times per second. Executing multiple IPC calls, SharedPreferences reads, and accessibility window tree queries directly on the main thread inside onSensorChanged() will cause UI stutters, frame drops, or high CPU usage.
  • Recommendation: Cache isBypassed status or run app bypass checks only when sensor state transitions from unblocked to blocked, rather than on every raw sensor event update.

2. SharedPreferences Instantiation Overhead

  • Location: ScreenOffAccessibilityService.kt lines 397 & 431
  • Issue: getSharedPreferences("essentials_prefs", MODE_PRIVATE) is called repeatedly inside isAppBypassedForPocketMode(), getActivePackageName(), and onSensorChanged().
  • Recommendation: ScreenOffAccessibilityService already maintains shared preference state or listeners. Accessing prefs repeatedly inside high-frequency sensor callbacks should be replaced with cached properties or a single SharedPreferences reference.

3. hasActiveMediaSession() Context / Exception Edge Case

  • Location: ScreenOffAccessibilityService.kt
  • Issue: Checking active media sessions on certain OEM ROMs or restricted user profiles can throw SecurityException if notification access / media listener permission is revoked or restricted.
  • Recommendation: Wrap calls to hasActiveMediaSession() inside a try-catch block inside isAppBypassedForPocketMode() to prevent unexpected service crashes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants