После добавления переходов активности выхода и входа в приложение я получаю отчеты о сбоях, подобные следующим:
Фатальное исключение: java.lang.NullPointerException: попытка вызвать виртуальный метод «android.view.ViewParent android.view.View.getParent()» для ссылки на нулевой объект в android.view.ViewOverlay$OverlayViewGroup.add(ViewOverlay.java: 164) в android.view.ViewGroupOverlay.add(ViewGroupOverlay.java:63) в android.app.EnterTransitionCoordinator.startRejectedAnimations(EnterTransitionCoordinator.java:598) в android.app.EnterTransitionCoordinator.startSharedElementTransition(EnterTransitionCoordinator.java:325) в android. app.EnterTransitionCoordinator.access$200(EnterTransitionCoordinator.java:42) в android.app.EnterTransitionCoordinator$5$1.run(EnterTransitionCoordinator.java:389) в android.app.ActivityTransitionCoordinator.startTransition(ActivityTransitionCoordinator.java:698) в android.app. EnterTransitionCoordinator$5.onPreDraw(EnterTransitionCoordinator.java:386) на android.view.ViewTreeObserver.disp atchOnPreDraw(ViewTreeObserver.java:847) в android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1985) в android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1077) в android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl .java:5845) в android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) в android.view.Choreographer.doCallbacks(Choreographer.java:580) в android.view.Choreographer.doFrame(Choreographer.java: 550) в android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) в android.os.Handler.handleCallback(Handler.java:739) в android.os.Handler.dispatchMessage(Handler.java:95) в android.os.Looper.loop(Looper.java:135) в android.app.ActivityThread.main(ActivityThread.java:5272) в java.lang.reflect.Method.invoke(Method.java) в java.lang.reflect .Method.invoke(Method.java:372) на com.android.internal .os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
Это не воспроизводимо, но количество сбоев является значительным.
Проведя некоторое исследование, я наткнулся на эту фиксацию, предполагающую, что это (фактически) внутренняя ошибка в Android: /#F0">https://android.googlesource.com/platform/frameworks/base/+/83c692efd3c53050fce132dfd2ef21763d3cf010%5E%21/#F0
Все отчеты о сбоях относятся к версии 5.0, 5.0.1 или 5.0.2. Поскольку 5.1 имеет более широкое распространение, но не показывает сбоев, похоже, что EnterTransitionCoordinator был исправлен в 5.1.
Таким образом, возможным решением будет проверка уровня API 22 или выше и только после этого выполнять переходы. Однако мне интересно, есть ли лучший способ; может быть, какой-то обходной путь, несмотря на то, что это кажется внутренним делом Android (все системные классы в стеке)?