Harden null safety in VoiceNotePlaybackService.

Addresses #13673.
This commit is contained in:
Nicholas Tinsley 2024-09-06 14:25:08 -04:00 committed by Cody Henthorne
parent 1f09f48e6b
commit a50f316659

View file

@ -77,15 +77,17 @@ public class VoiceNotePlaybackService extends MediaSessionService {
player.addListener(new VoiceNotePlayerEventListener()); player.addListener(new VoiceNotePlayerEventListener());
voiceNotePlayerCallback = new VoiceNotePlayerCallback(this, player); voiceNotePlayerCallback = new VoiceNotePlayerCallback(this, player);
mediaSession = buildMediaSession(false);
if (mediaSession == null) { final MediaSession session = buildMediaSession(false);
if (session == null) {
Log.e(TAG, "Unable to create media session at all, stopping service to avoid crash."); Log.e(TAG, "Unable to create media session at all, stopping service to avoid crash.");
stopSelf(); stopSelf();
return; return;
} else {
mediaSession = session;
} }
keyClearedReceiver = new KeyClearedReceiver(this, mediaSession.getToken()); keyClearedReceiver = new KeyClearedReceiver(this, session.getToken());
setMediaNotificationProvider(new VoiceNoteMediaNotificationProvider(this)); setMediaNotificationProvider(new VoiceNoteMediaNotificationProvider(this));
setListener(new MediaSessionServiceListener()); setListener(new MediaSessionServiceListener());
@ -96,9 +98,10 @@ public class VoiceNotePlaybackService extends MediaSessionService {
public void onTaskRemoved(Intent rootIntent) { public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent); super.onTaskRemoved(rootIntent);
if (mediaSession != null) { final MediaSession session = mediaSession;
mediaSession.getPlayer().stop(); if (session != null) {
mediaSession.getPlayer().clearMediaItems(); session.getPlayer().stop();
session.getPlayer().clearMediaItems();
} }
} }
@ -107,8 +110,9 @@ public class VoiceNotePlaybackService extends MediaSessionService {
AppDependencies.getDatabaseObserver().unregisterObserver(attachmentDeletionObserver); AppDependencies.getDatabaseObserver().unregisterObserver(attachmentDeletionObserver);
player.release(); player.release();
if (mediaSession != null) { final MediaSession session = mediaSession;
mediaSession.release(); if (session != null) {
session.release();
mediaSession = null; mediaSession = null;
} }