on Update Notification
Media3's default implementation posts its own media notification and, every time the notification is refreshed, calls Context.startForegroundService() on this service followed by startForeground() with only the mediaPlayback type (or stopForeground() when it decides playback has stopped). Those calls are posted asynchronously, so one that lands after stopSelf() re-creates the service record with a pending "must call startForeground()", and the system then kills the app with a RemoteServiceException as soon as that record is stopped again (e.g. stopWithTask on exit). We own the foreground state and the notification ourselves, so Media3 must not touch either.