2013-12-11 24 views
14

La mia app fornisce la vista su YouTube utilizzando l'Android SDK di Youtube. Nessun problema a mostrare video, ma si blocca con DeadObjectException durante l'apertura dell'app YouTube.L'SDK di YouTube si arresta in modo anomalo con DeadObjectException quando si passa all'app YouTube

Il mio codice è come qui di seguito

//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); 
     } 
    } 
} 

e si blocca quando 1) si muovono su YouTube app direttamente tramite dolo o 2) mossa per app YouTube tramite YouTube icona in mostra giocatore.

registro Crash è come qui di seguito

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) 

per favore mi aiuti a risolvere questo problema.

ho testato su Nexus 5, Android 4.4, youtube API 1.0, app YouTube 5.3.24

+0

samething mi è successo anche a Nexus 4 Android 4.4 – Chrishan

+0

Hai ottenuto la soluzione per il tuo problema, visto che anch'io sto affrontando lo stesso problema. Qualsiasi aiuto sarà riconosciuto. –

+0

@PDWaghela sfortunatamente, non sono riuscito a trovare una buona soluzione per questo problema :( – kingori

risposta

1

Questo accade quando il dispositivo è in rotazione (o qualsiasi altro cambiamento di configurazione del sistema che provocano l'attività per riavviare) dopo youTubeView. inizializza e prima vengono chiamati onInitializationSuccess. La mia comprensione è quando ruoti il ​​tuo dispositivo in questo momento l'oggetto originale del giocatore diventerà morto e il thread che supponiamo di chiamare suInitializationSuccess è ancora in esecuzione e una volta che quel thread chiamaInitializationSuccess userà l'oggetto dead player.

avvolgere il lettore con il seguente tentativo di cattura risolverà il problema:

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

* * RISPOSTA estratto da https://code.google.com/p/gdata-issues/issues/detail?id=4395

+0

, ma quel problema si verifica anche quando non lo faccio ruotare il dispositivo e, come dice lo stacktrace, è stata generata un'eccezione in cui non riesco a rilevare l'eccezione ex) android.support.v4.app.Fragment.performSaveInstanceState. – kingori

+0

Bene ancora il problema rimane lo stesso. puoi avere un riferimento alla mia [Domanda] (http://stackoverflow.com/questions/25747226/youtube-player-crashes-with-giving-java-lang-illegalstateexception-android-os-d). Avete altri suggerimenti. –

Problemi correlati