When changing views, the AudioHandler receives onAudioFocusChange and adds all running media to a pausedForFocus list. With Angular, a controller's life cycle might not exactly match what Android is seeing for this event (I'm a bit unclear on how the focus change events are fired). So if that media object is later released, it needs to be removed from those lists in AudioHandler.release:
If this does not happen, the AudioHandler receives another onAudioFocusChange event and calls resumeAllGainedFocus which calls AudioPlayer.startPlaying with a null file, in turn calling readyPlayer(null), causing a NullPointerException and crash at the line:
if (this.audioFile.compareTo(file) == 0)
There might be a root cause here that I am missing, but this displays the symptom I am seeing.