Android 应用程序最小化时YouTubePlayerView的活动崩溃
我已经将YouTubePlayerView库集成到我们的应用程序中,它工作得非常好,但每当我最小化应用程序时,它就会崩溃,或者你可以说,每当应用程序在后台运行时,它就会崩溃 以下是崩溃日志:Android 应用程序最小化时YouTubePlayerView的活动崩溃,android,youtube-api,android-youtube-api,Android,Youtube Api,Android Youtube Api,我已经将YouTubePlayerView库集成到我们的应用程序中,它工作得非常好,但每当我最小化应用程序时,它就会崩溃,或者你可以说,每当应用程序在后台运行时,它就会崩溃 以下是崩溃日志: java.lang.NoClassDefFoundError: rt at rs.<clinit>(SourceFile:17) at android.support.v7.widget.RecyclerView.onSaveInstanceState(S
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"/>
我认为您的应用程序在重新启动时由于配置更改而崩溃 您可以禁用方向更改的自动活动重新创建,并自行处理 要做到这一点,请添加
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();
}
您可以参考这篇文章,其中提出了一些可能有帮助的解决方法:
在onSavedInstanceState和onStop上释放YouTubePlayer。
如果不起作用,只需在onPause中而不是onSaveInstanceState和onStop中添加相同的行,并在onResume中而不是onCreate中初始化YouTubePlayerFragment,这样每次活动在前台时都可用,当应用程序进入后台时释放。
附加参考:
我已经在清单中添加了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();
}