diff --git a/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java b/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java index d43d3aa..300735d 100644 --- a/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java +++ b/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java @@ -278,7 +278,6 @@ public class AudioPlayer implements MethodCallHandler, Player.EventListener, Met break; case "dispose": dispose(); - onDispose.run(); result.success(null); break; default: @@ -518,6 +517,7 @@ public class AudioPlayer implements MethodCallHandler, Player.EventListener, Met buffering = false; transition(PlaybackState.none); } + onDispose.run(); } private void abortSeek() { diff --git a/android/src/main/java/com/ryanheise/just_audio/JustAudioPlugin.java b/android/src/main/java/com/ryanheise/just_audio/JustAudioPlugin.java index bba8e93..9d68c8e 100644 --- a/android/src/main/java/com/ryanheise/just_audio/JustAudioPlugin.java +++ b/android/src/main/java/com/ryanheise/just_audio/JustAudioPlugin.java @@ -13,13 +13,13 @@ import io.flutter.plugin.common.PluginRegistry.Registrar; public class JustAudioPlugin implements FlutterPlugin { private MethodChannel channel; - private MethodCallHandlerImpl methodCallHandler; + private MainMethodCallHandler methodCallHandler; public JustAudioPlugin() { } /** - * Plugin registration. + * v1 plugin registration. */ public static void registerWith(Registrar registrar) { final JustAudioPlugin plugin = new JustAudioPlugin(); @@ -42,7 +42,7 @@ public class JustAudioPlugin implements FlutterPlugin { } private void startListening(Context applicationContext, BinaryMessenger messenger) { - methodCallHandler = new MethodCallHandlerImpl(applicationContext, messenger); + methodCallHandler = new MainMethodCallHandler(applicationContext, messenger); channel = new MethodChannel(messenger, "com.ryanheise.just_audio.methods"); channel.setMethodCallHandler(methodCallHandler); diff --git a/android/src/main/java/com/ryanheise/just_audio/MethodCallHandlerImpl.java b/android/src/main/java/com/ryanheise/just_audio/MainMethodCallHandler.java similarity index 83% rename from android/src/main/java/com/ryanheise/just_audio/MethodCallHandlerImpl.java rename to android/src/main/java/com/ryanheise/just_audio/MainMethodCallHandler.java index 5456a6e..990a71a 100644 --- a/android/src/main/java/com/ryanheise/just_audio/MethodCallHandlerImpl.java +++ b/android/src/main/java/com/ryanheise/just_audio/MainMethodCallHandler.java @@ -8,16 +8,17 @@ import io.flutter.plugin.common.MethodChannel.MethodCallHandler; import io.flutter.plugin.common.MethodChannel.Result; import java.util.HashMap; import java.util.List; +import java.util.ArrayList; import java.util.Map; -public class MethodCallHandlerImpl implements MethodCallHandler { +public class MainMethodCallHandler implements MethodCallHandler { private final Context applicationContext; private final BinaryMessenger messenger; private final Map players = new HashMap<>(); - public MethodCallHandlerImpl(Context applicationContext, + public MainMethodCallHandler(Context applicationContext, BinaryMessenger messenger) { this.applicationContext = applicationContext; this.messenger = messenger; @@ -44,10 +45,8 @@ public class MethodCallHandlerImpl implements MethodCallHandler { } void dispose() { - for (AudioPlayer player : players.values()) { + for (AudioPlayer player : new ArrayList(players.values())) { player.dispose(); } - - players.clear(); } } diff --git a/lib/just_audio.dart b/lib/just_audio.dart index 3186550..a6b0170 100644 --- a/lib/just_audio.dart +++ b/lib/just_audio.dart @@ -451,7 +451,7 @@ class AudioPlayer { /// * [AudioPlaybackState.none] /// * [AudioPlaybackState.connecting] Future dispose() async { - await _invokeMethod('dispose', [_id]); + await _invokeMethod('dispose'); if (_cacheFile?.existsSync() == true) { _cacheFile?.deleteSync(); }