2017-07-03 9 views
0

私はYouTubePlayerViewライブラリをアプリに統合していますが、アプリを最小限にするとクラッシュしたり、アプリがバックグラウンドでクラッシュしたときにいつでも言うことができます。ここでアプリが最小化されているときにYouTubePlayerViewでアクティビティがクラッシュする

はクラッシュログである:ここで

java.lang.NoClassDefFoundError: rt 
     at rs.<clinit>(SourceFile:17) 
     at android.support.v7.widget.RecyclerView.onSaveInstanceState(SourceFile:201) 
     at android.view.View.dispatchSaveInstanceState(View.java:12985) 
     at android.view.ViewGroup.dispatchFreezeSelfOnly(ViewGroup.java:2643) 
     at android.support.v7.widget.RecyclerView.dispatchSaveInstanceState(SourceFile:220) 
     at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
     at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
     at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
     at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
     at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
     at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
     at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
     at android.view.View.saveHierarchyState(View.java:12968) 
     at com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1705) 
     at android.app.Activity.onSaveInstanceState(Activity.java:1277) 
     at com.google.android.youtube.player.YouTubeBaseActivity.onSaveInstanceState(Unknown Source) 
     at android.app.Activity.performSaveInstanceState(Activity.java:1226) 
     at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1223) 
     at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3342) 
     at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3401) 
     at android.app.ActivityThread.access$1100(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1320) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:149) 
     at android.app.ActivityThread.main(ActivityThread.java:5257) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 
     at dalvik.system.NativeStart.main(Native Method) 
07-03 13:02:44.608 31106-31174/com.seeken D/FA: Logging event (FE): _ae, Bundle[{_o=crash, timestamp=1499067164609, fatal=1}] 
07-03 13:02:44.808 31106-31106/com.seeken I/dalvikvm: Could not find method java.util.Locale.toLanguageTag, referenced from method bme.a 
07-03 13:02:44.808 31106-31106/com.seeken W/dalvikvm: VFY: unable to resolve virtual method 10275: Ljava/util/Locale;.toLanguageTag()Ljava/lang/String; 
07-03 13:02:44.808 31106-31106/com.seeken D/dalvikvm: VFY: replacing opcode 0x6e at 0x00e4 
07-03 13:02:44.848 31106-31106/com.seeken D/dalvikvm: GC_FOR_ALLOC freed 3454K, 15% free 20646K/24152K, paused 25ms, total 25ms 
07-03 13:02:44.868 31106-31106/com.seeken E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.seeken, PID: 31106 
java.lang.NoClassDefFoundError: rt 
    at rs.<clinit>(SourceFile:17) 
    at android.support.v7.widget.RecyclerView.onSaveInstanceState(SourceFile:201) 
    at android.view.View.dispatchSaveInstanceState(View.java:12985) 
    at android.view.ViewGroup.dispatchFreezeSelfOnly(ViewGroup.java:2643) 
    at android.support.v7.widget.RecyclerView.dispatchSaveInstanceState(SourceFile:220) 
    at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
    at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
    at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
    at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
    at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
    at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
    at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2629) 
    at android.view.View.saveHierarchyState(View.java:12968) 
    at com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1705) 
    at android.app.Activity.onSaveInstanceState(Activity.java:1277) 
    at com.google.android.youtube.player.YouTubeBaseActivity.onSaveInstanceState(Unknown Source) 
    at android.app.Activity.performSaveInstanceState(Activity.java:1226) 
    at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1223) 
    at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3342) 
    at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3401) 
    at android.app.ActivityThread.access$1100(ActivityThread.java:139) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1320) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:149) 
    at android.app.ActivityThread.main(ActivityThread.java:5257) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 
    at dalvik.system.NativeStart.main(Native Method) 

は私のマニフェストです:

<activity android:name=".activities.VideoActivity" 
      android:configChanges="orientation|screenLayout|screenSize"/> 

答えて

0

私は再起動時にアプリケーションがクラッシュしていると思うので、設定の

を変えるあなたは無効にすることができますオリエンテーションの変更のための自動アクティビティレクリエーション、およびそれを自分で処理します。

は、それを行うの詳細については、 runtime-changes

android:configChanges="orientation|screenLayout|screenSize" 

を追加したり、活動にこのコードを追加するには

@Nullable 
protected YouTubePlayer mUtPlayer; 

@Override 
public void onSaveInstanceState(Bundle outState) { 
/* release ut when home button pressed. */ 
if (mUtPlayer != null) { 
    mUtPlayer.release(); 
} 
mUtPlayer = null; 
super.onSaveInstanceState(outState); 
} 

@Override 
public void onStop() { 
/* release ut when go to other fragment or back pressed */ 
if (mUtPlayer != null) { 
    mUtPlayer.release(); 
} 
mUtPlayer = null; 
super.onStop(); 
} 
+0

私はすでに'アンドロイドを追加しました。チェックしてください。 –

1

あなたは、いくつかの回避策を提案し、このSO postを参照することがあるかもしれませんヘルプ:

  • YouTubePlayeronSavedInstanceStateおよびonStopにリリースします。
@Nullable 
protected YouTubePlayer mUtPlayer; 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    /* release ut when home button pressed. */ 
    if (mUtPlayer != null) { 
     mUtPlayer.release(); 
    } 
    mUtPlayer = null; 
    super.onSaveInstanceState(outState); 
} 

@Override 
public void onStop() { 
    /* release ut when go to other fragment or back pressed */ 
    if (mUtPlayer != null) { 
     mUtPlayer.release(); 
    } 
    mUtPlayer = null; 
    super.onStop(); 
} 
  • それが動作しない場合は、単にではなく、onSaveInstanceStateonStopで同じ行を追加し、初期化YouTubePlayerFragmentonResumeではなく、onCreateでそれよアクティビティがフォアグラウンドになるたびに利用可能になり、アプリがバックグラウンドに移行すると解放されます。

追加参照:configChangesは= "オリエンテーション| screenLayout |画面サイズ" `マニフェストが、それでも直面問題でこのコード:

関連する問題