Archivierungsfehler für Entwickler der YouTube Android API-Bibliothek: siehe Android-youtube-api-Tag
Im Laufe der letzten anderthalb Wochen ist mir aufgefallen, dass diese seltsame BadParcelableException in unserer App stetig zunimmt und sich auf die neue YouTube-Version von Android beschränkt hat.
Dieser Absturz tritt auf, wenn Ihre App ein Youtube-Video spielt, Ihre App in den Hintergrund versetzt, das Beenden der Youtube-App erzwingt und Ihre App erneut startet. Absturz reproduzierbar auf Youtube Version 12.19.56. Auch getestet auf einer älteren YouTube-Version 12.05.21 und der Absturz war nicht da.
Stapelverfolgung:
%Vor%Weitere Informationen:
%Vor% Das Problem beim Speichern und Wiederherstellen des Ansichtszustands. Youtube-App hat einen Bug- und Store-View-Status, der die Instanz der Klasse asc
von youtube apk enthält. Also unsere App kann es nicht wiederherstellen, weil nichts über diese Klasse bekannt ist. Meine Lösung verhindert das Speichern des Ansichtszustands für YoutubePlayerView
in YouTubePlayerSupportFragment
beim nächsten Code:
Dieser Code sollte zu Ihrer Unterklasse von YouTubePlayerSupportFragment
hinzugefügt werden.
Diese Lösung entfernt den youtube player state nicht vom Bundle. So wird YouTube-Player erfolgreich wiederhergestellt.
Verwenden Sie folgenden Code in Ihrem onCreate:
%Vor%Der Fehler ist wahrscheinlich darauf zurückzuführen, dass der YouTube-Bibliothekscode benutzerdefiniertes Parcelable im Bundle gespeichert hat (YouTube-Bibliotheksklassen werden wahrscheinlich von Proguard verschleiert, daher komische Namen wie "asc").
Wenn der obige Vorschlag nicht funktioniert, folgen Sie den Anweisungen von @ Fitz und legen Sie das State Bundle ab. Versuchen Sie nicht, in onCreate (das wird nicht funktionieren) zu stören, stattdessen ist es am besten, onSaveInstanceState zu überschreiben, um Bundle.EMPTY zurückzugeben, wenn Ihre App ausgesetzt ist, während Sie eine Wiedergabe durchführen.
Beachten Sie, dass der betreffende Fehler in mehrfacher Hinsicht ziemlich kompliziert ist. Wenn Sie (oder die YouTube-App) verschachtelte Bundles in sich speichern, müssen diese auch über den richtigen ClassLoader-Satz verfügen ... Jemand sollte Google anweisen, einen gesunden Menschenverstand zu finden und Thread # getContextClassLoader innerhalb von Bundle zu verwenden, um dieses Problem ein für alle Mal zu beheben / p>
Ich habe eine Lösung gefunden, die für mich funktioniert. In meiner onCreate
-Methode erhalte ich den RuntimeException
, der wegen des ClassNotFoundException
im youtube player geworfen wird. Das Video verliert seinen Status. Durch Drücken von "Play" wird erneut gestartet. Ansonsten wie immer.
Tags und Links android youtube android-youtube-api parcelable badparcelableexception