Fix SlimeVR server from not working reliably on Quest standalone #658

Closed
opened 2026-04-05 20:52:22 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @swax on 8/19/2024

The SlimeVR server running on Android is at risk of being killed when running in the background and/or when under memory pressure. This is especially bad on the Quest as playing a game requires a lot of memory and it doesn't take long for Android to kill the SlimeVR server if it is running the background.

According to the docs, processes with foreground services are less likely to be killed by Android, for example a music player running in the background. We can start a foreground service using startForegroundService, one of the stipulations being that the service must also show a persistent notification as well. An importance level of 'low' keeps the notification out of the way, only in the alerts tray.

Tested on Quest with server running in background:

  • Verified the current SlimeVR server is killed after a period of time
  • Verified with the new build the server remains running for over an hour, in high pop worlds, with all avatars on (high memory pressure)

Notes:
There isn't a way to shutdown the SlimeVR server from within the GUI afaik. This is an issue on Quest as there isn't a way to manually kill apps. The only way to kill the server on Quest is to restart the device (afaik).

What the alert looks like on Quest, it only shows up in the notifications dialog, not in the game
IMG_8239

*Originally created by @swax on 8/19/2024* The SlimeVR server running on Android is at risk of being killed when running in the background and/or when under memory pressure. This is especially bad on the Quest as playing a game requires a lot of memory and it doesn't take long for Android to kill the SlimeVR server if it is running the background. According to the docs, processes with foreground services are [less likely to be killed](https://developer.android.com/guide/components/activities/activity-lifecycle#asem) by Android, for example a music player running in the background. We can start a foreground service using `startForegroundService`, one of the stipulations being that the service must also show a persistent notification as well. An importance level of 'low' keeps the notification out of the way, only in the alerts tray. Tested on Quest with server running in background: - Verified the current SlimeVR server is killed after a period of time - Verified with the new build the server remains running for over an hour, in high pop worlds, with all avatars on (high memory pressure) Notes: There isn't a way to shutdown the SlimeVR server from within the GUI afaik. This is an issue on Quest as there isn't a way to manually kill apps. The only way to kill the server on Quest is to restart the device (afaik). What the alert looks like on Quest, it only shows up in the notifications dialog, not in the game ![IMG_8239](https://github.com/user-attachments/assets/7f9398ba-0325-4bb0-89ea-4dd77173b55f)
MrUnknownDE added the Area: ServerPriority: HighOS: AndroidType: EnhancementArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementType: EnhancementOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: AndroidOS: Android labels 2026-04-05 20:53:16 +02:00
Sign in to join this conversation.
No Label Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android OS: Android Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement Type: Enhancement
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/SlimeVR-Server#658