Code: Select all
just_audio: ^0.9.42
riverpod: ^2.6.1
flutter_riverpod: ^2.4.10
riverpod_annotation: ^2.3.4
Dev:
riverpod_generator: ^2.3.11
Platform: iOS
Flutter version: 3.27.2
Device: iPhone 12 Pro Max - 18.1.1
< /code>
Anbieter -Setup < /h3>
@Riverpod(keepAlive: true)
AudioPlayer audioPlayer(AudioPlayerRef ref) {
final audioPlayer = AudioPlayer(
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0',
);
ref.onDispose(() async => await audioPlayer.dispose());
return audioPlayer;
}
< /code>
Schritte zur Reproduktion < /h3>
[list]
[*] Öffnen Sie die App und spielen Sie Audio erfolgreich ab < /li>
Drücken Home -Taste, um die App in Hintergrund zu setzen (nicht die App abtöten) < /li>
Verwenden Sie andere Apps, sperren Bildschirm, den Geräte in Leerlauf lassen < /li>
Nach mehreren Stunden (z. Übernachtung) < /li>
Kehren Sie aus Hintergrund zur App zurück < /li>
Versuchen Sie, Audio zu spielen < /li>
< /ol>
< H3> Aktuelles Verhalten < /h3>
[list]
Audio wird nach der Rückkehr zur App < /li>
keine Fehlermeldungen < /li> < BR /> Nur durch vollständiges Töten und Wiedereröffnung der App < /li>
< /ul>
Erwartete Verhalten < /h3>
Audio sollte weiter funktionieren, wenn er aus Hintergrund zur App zurückkehrt > < /ul>
Hypothese < /h3>
Es gibt zwei mögliche Szenarien: < /p>
[b] Riverpod -Anbieter Problem: [/b]
Trotz Keepalive: True
[*] Dies erscheint jedoch unwahrscheinlich, da die Dokumentationsstaaten von Riverpod -Anbietern nur entsorgen sollten, wann die App getötet wird. li> Just_audio Ausgabe: < /strong> < /p>
Die Audioplayer-Instanz kann nach langen Zeiträumen im Hintergrund selbstschreibende oder freigende Ressourcen sein. /li>
The provider remains alive but holds an invalid AudioPlayer instance
[/list]
[/list]
Fragen < /h3>
[*] Ist es für Just_audio möglich, Ressourcen automatisch zu veröffentlichen, wenn die App für lange Zeiträume im Hintergrund ist? < /li>
Gibt es bekannte Probleme mit Keepalive -Anbietern in ähnlichen Szenarien? /> < /ol>
Zusätzlicher Kontext < /h3>
- Problem tritt erst nach verlängerten Hintergrundperioden (Stunden) < /li>
kurze Hintergrundperioden (30 Minuten) funktionieren gut