Skip to content

Commit 96170d3

Browse files
committed
Execute in the right isolate
1 parent ced4c00 commit 96170d3

File tree

2 files changed

+27
-24
lines changed

2 files changed

+27
-24
lines changed

android/src/main/java/com/ryanheise/audioservice/AudioServicePlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,7 @@ public void onMethodCall(MethodCall call, Result result) {
580580
if (silenceAudioTrack != null)
581581
silenceAudioTrack.release();
582582
backgroundFlutterView = null;
583+
invokeMethod("onStopped");
583584
result.success(true);
584585
break;
585586
case "notifyChildrenChanged":

lib/audio_service.dart

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -183,20 +183,6 @@ class Rating {
183183
Rating._fromRaw(Map<dynamic, dynamic> raw) : this._internal(RatingStyle.values[raw['type']], raw['value']);
184184
}
185185

186-
StreamController<List<MediaItem>> _browseMediaChildrenController =
187-
StreamController<List<MediaItem>>.broadcast();
188-
StreamController<PlaybackState> _playbackStateController =
189-
StreamController<PlaybackState>.broadcast();
190-
StreamController<MediaItem> _currentMediaItemController =
191-
StreamController<MediaItem>.broadcast();
192-
StreamController<List<MediaItem>> _queueController =
193-
StreamController<List<MediaItem>>.broadcast();
194-
195-
List<MediaItem> _browseMediaChildren;
196-
PlaybackState _playbackState;
197-
MediaItem _currentMediaItem;
198-
List<MediaItem> _queue;
199-
200186
/// Metadata about an audio item that can be played, or a folder containing
201187
/// audio items.
202188
class MediaItem {
@@ -326,33 +312,49 @@ class AudioService {
326312
/// task.
327313
static const String MEDIA_ROOT_ID = "root";
328314

315+
static StreamController<List<MediaItem>> _browseMediaChildrenController =
316+
StreamController<List<MediaItem>>.broadcast();
317+
329318
/// A stream that broadcasts the children of the current browse
330319
/// media parent.
331320
static Stream<List<MediaItem>> get browseMediaChildrenStream =>
332321
_browseMediaChildrenController.stream;
333322

323+
static StreamController<PlaybackState> _playbackStateController =
324+
StreamController<PlaybackState>.broadcast();
325+
334326
/// A stream that broadcasts the playback state.
335327
static Stream<PlaybackState> get playbackStateStream =>
336328
_playbackStateController.stream;
337329

330+
static StreamController<MediaItem> _currentMediaItemController =
331+
StreamController<MediaItem>.broadcast();
332+
338333
/// A stream that broadcasts the current [MediaItem].
339334
static Stream<MediaItem> get currentMediaItemStream =>
340335
_currentMediaItemController.stream;
341336

337+
static StreamController<List<MediaItem>> _queueController =
338+
StreamController<List<MediaItem>>.broadcast();
339+
342340
/// A stream that broadcasts the queue.
343341
static Stream<List<MediaItem>> get queueStream => _queueController.stream;
344342

345343
/// The children of the current browse media parent.
346344
static List<MediaItem> get browseMediaChildren => _browseMediaChildren;
345+
static List<MediaItem> _browseMediaChildren;
347346

348347
/// The current playback state.
349348
static PlaybackState get playbackState => _playbackState;
349+
static PlaybackState _playbackState;
350350

351351
/// The current media item.
352352
static MediaItem get currentMediaItem => _currentMediaItem;
353+
static MediaItem _currentMediaItem;
353354

354355
/// The current queue.
355356
static List<MediaItem> get queue => _queue;
357+
static List<MediaItem> _queue;
356358

357359
/// Connects to the service from your UI so that audio playback can be
358360
/// controlled.
@@ -391,6 +393,16 @@ class AudioService {
391393
_queue = args.map(_raw2mediaItem).toList();
392394
_queueController.add(_queue);
393395
break;
396+
case 'onStopped':
397+
_browseMediaChildren = null;
398+
_browseMediaChildrenController.add(null);
399+
_playbackState = null;
400+
_playbackStateController.add(null);
401+
_currentMediaItem = null;
402+
_currentMediaItemController.add(null);
403+
_queue = null;
404+
_queueController.add(null);
405+
break;
394406
}
395407
});
396408
await _channel.invokeMethod("connect");
@@ -791,16 +803,6 @@ class AudioServiceBackground {
791803
await _backgroundChannel.invokeMethod('ready', enableQueue);
792804
await onStart();
793805
await _backgroundChannel.invokeMethod('stopped');
794-
795-
_browseMediaChildren = null;
796-
_browseMediaChildrenController.add(null);
797-
_playbackState = null;
798-
_playbackStateController.add(null);
799-
_currentMediaItem = null;
800-
_currentMediaItemController.add(null);
801-
_queue = null;
802-
_queueController.add(null);
803-
804806
_backgroundChannel.setMethodCallHandler(null);
805807
_state = _noneState;
806808
}

0 commit comments

Comments
 (0)