2013-12-11 6 views
14

Meine App bietet Youtube-Ansicht mit Youtube Android SDK. Kein Problem beim Anzeigen von Videos, aber es stürzt mit DeadObjectException beim Öffnen der Youtube-App ab.Youtube SDK stürzt mit DeadObjectException ab, wenn es zur youtube-App verschoben wird

Mein Code ist wie unten

//init 
FragmentTransaction fragmentTransaction = fm.beginTransaction(); 

YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment(); 
fragmentTransaction.replace(R.id.fragmentz, fragment); 
fragmentTransaction.commit(); 

fragment.initialize(Constants.YOUTUBE_DEV_KEY, this); 

@Override 
public void onInitializationSuccess(YouTubePlayer.Provider provider, final YouTubePlayer youTubePlayer, boolean wasRestored) { 
    if (!wasRestored) { 
     this.youTubePlayer = youTubePlayer; 
     this.youTubePlayer.setShowFullscreenButton(true); 
     try { 
      this.youTubePlayer.loadVideo(youtubeLink); 
      //other stuff 
     } catch (IllegalStateException e) { 
      Logger.e(e); 
     } 
    } 
} 

und es stürzt ab, wenn 1) bewegen sich auf youtube App direkt über Vorsatz oder 2) bewegen sich auf youtube app via youtube-Symbol auf Player-Ansicht.

Crash-Protokoll ist wie unten

java.lang.IllegalStateException: android.os.DeadObjectException 
     at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.u(SourceFile:506) 
     at com.google.android.apps.youtube.api.jar.a.a.t(SourceFile:467) 
     at com.google.android.youtube.player.internal.h.onTransact(SourceFile:392) 
     at android.os.Binder.transact(Binder.java:361) 
     at com.google.android.youtube.player.internal.d$a$a.r(Unknown Source) 
     at com.google.android.youtube.player.internal.s.h(Unknown Source) 
     at com.google.android.youtube.player.YouTubePlayerView.e(Unknown Source) 
     at com.google.android.youtube.player.YouTubePlayerSupportFragment.onSaveInstanceState(Unknown Source) 
     at android.support.v4.app.Fragment.performSaveInstanceState(Fragment.java:1647) 
     at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1610) 
     at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1678) 
     at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:546) 
     at com.actionbarsherlock.app.SherlockFragmentActivity.onSaveInstanceState(SherlockFragmentActivity.java:127) 
Caused by: android.os.DeadObjectException 
     at android.os.BinderProxy.transact(Native Method) 
     at com.google.android.apps.youtube.api.b.a.aq.k(SourceFile:685) 
     at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.u(SourceFile:503) 
     at com.google.android.apps.youtube.api.jar.a.a.t(SourceFile:467) 
         at com.google.android.youtube.player.internal.h.onTransact(SourceFile:392) 
     at android.os.Binder.transact(Binder.java:361) 
     at com.google.android.youtube.player.internal.d$a$a.r(Unknown Source) 
     at com.google.android.youtube.player.internal.s.h(Unknown Source) 
     at com.google.android.youtube.player.YouTubePlayerView.e(Unknown Source) 
     at com.google.android.youtube.player.YouTubePlayerSupportFragment.onSaveInstanceState(Unknown Source) 
     at android.support.v4.app.Fragment.performSaveInstanceState(Fragment.java:1647) 

mir bitte helfen, dieses Problem zu beheben.

I getestet haben auf Nexus 5, Android 4.4, 1.0 youtube api, youtube app 5.3.24

+0

Samething mir passiert auch in Nexus 4 mit Android 4.4 – Chrishan

+0

Haben Sie bekam die Lösung für Ihr Problem, da ich auch das gleiche Problem habe. Jede Hilfe wird anerkannt. –

+0

@PDWaghela leider habe ich keine gute Lösung für dieses Problem gefunden :( – kingori

Antwort

1

Dies geschieht, wenn sich das Gerät dreht (oder andere Systemkonfigurationsänderung, die eine Aktivität zum Neustart verursachen) nach youTubeView. initialisieren und bevor onInitializationSuccess aufgerufen werden. Mein Verständnis ist, wenn Sie Ihr Gerät in dieser Zeit rotieren das ursprüngliche Spieler-Objekt wird tot und der Thread, der OnInitializationSuccess aufrufen wird immer noch ausgeführt und sobald dieser Thread onInitializationSuccess aufruft wird es das tote Player-Objekt verwenden.

Ihre Spieler mit dem folgenden Versuch fangen wickeln wird das Problem lösen:

try{ 
    youtubeplayer.load(0..; 
}catch (IllegalStateException ise){ 
    //do nothing probably device go rotated 
    return; 
} 

* * ANTWORT GEWONNEN AUS https://code.google.com/p/gdata-issues/issues/detail?id=4395

+0

gut, aber dieses Problem tritt auf, selbst wenn ich don "t rotieren Gerät. Und wie der Stacktrace sagt, Ausnahme wurde ausgelöst, wo ich die Ausnahme nicht abfangen kann ex) android.support.v4.app.Fragment.performSaveInstanceState. – kingori

+0

Nun bleibt das Problem gleich. Sie können eine Referenz meine [Frage] (http://stackoverflow.com/questions/25747226/youtube-player-crashes-with-giving-java-lang-illegalstateexception-android-os-d) haben. Hast du noch andere Vorschläge? –

Verwandte Themen