Пожалуйста, проверьте ссылку вопроса. Android подтвердил, что это была ошибка в O, которая, видимо, уже исправлена. Я еще не подтвердил это, но они приложили видео

ужно отключить анимацию перехода активности для всех экранов в моем приложении. Предыдущее решение отлично работало на всех версиях Android:

<style name="base_theme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowAnimationStyle">@null</item>
</style>

... но для Android 8 «Oreo» вызывает мигание черного экрана при каждом переходе (движение вперед или назад). То есть анимации по-прежнему нет, но очень раздражает мигание (вероятность 90%, ~ 20-30 миллисекунд, весь экран).

Согласно моим «исследованиям»:

не зависит от содержания активности и воспроизводится с пустыми действияминет никакой фоновой работы, которая могла бы замедлить процесс переходаIntent.FLAG_ACTIVITY_NO_ANIMATION также мигаетoverridePendingTransition (0,0) тоже не работает

Единственное решение, которое я смог найти:

Определить пустую анимацию перехода

<?xml version="1.0" encoding="utf-8"?>
<set />

и применить его к каждому виду деятельности в приложении (создать и завершить)

overridePendingTransition(R.anim.animation_activity_none, R.anim.animation_activity_none);

Вопрос:

Это какие-то новые ограничения для Oreo (то есть функция), или ошибка платформы, или, возможно, проблема приложения? Есть ли другие решения?

[ОБНОВИТЬ]

Еще одна находка. Убедитесь, что вы вызываете Activity finish () и overridePendingTransition () в главном потоке! В противном случае происходит скачок потока, и иногда overridePendingTransition не применяется.

[ОБНОВИТЬ]

Google подтвердил, что это ошибка в Android 8.0, предположительно исправленная в 8.1. Таким образом, исправление «пустой анимации» длится годами, пока minSdkVersion == 27.

 Sergey Krivenkov12 окт. 2017 г., 13:57
@ hustoj2 отправил отчет об ошибкеissuetracker.google.com/issues/67728861
 Sergey Krivenkov25 сент. 2017 г., 12:30
@KimKevin Да, все равно мигает. Так что это не имеет значения Activity или AppCompatActivity.
 kimkevin25 сент. 2017 г., 11:43
stackoverflow.com/a/11079475/2949834 Вы пытались сменить родителя на parent = "android: Theme"?
 hustoj212 окт. 2017 г., 01:23
@SergeyKrivenkov большое спасибо за это. Я вижу, что вы проделали большую кропотливую работу, чтобы разобраться в этом и исследовать сокращенные контрольные примеры, поэтому ваше решение сэкономило мне кучу времени на том же пути. Вы сообщили об этом в системе отслеживания проблем Android?

Ответы на вопрос(1)

и мне удалось ее решить, идея в том, чтобы ничего не играть, см. Ниже XML:

Папка значений

<style name="yourTheme">
    <item name="android:windowAnimationStyle">@style/ThemeApp.Animation.Activity.Replace</item>

<style name="ThemeApp.Animation.Activity.Replace">
    <item name="android:activityOpenEnterAnimation">@anim/replace_anim</item>
    <item name="android:activityOpenExitAnimation">@anim/replace_anim</item>
    <item name="android:activityCloseEnterAnimation">@anim/replace_anim</item>
    <item name="android:activityCloseExitAnimation">@anim/replace_anim</item>
    <item name="android:taskOpenEnterAnimation">@anim/replace_anim</item>
    <item name="android:taskOpenExitAnimation">@anim/replace_anim</item>

Папка Anim: replace_anim.xml

<set/>
 Mike Kuasinski30 нояб. 2017 г., 18:23
Пожалуйста, проверьте ссылку вопроса. Android подтвердил, что это была ошибка в O, которая, видимо, уже исправлена. Я еще не подтвердил это, но они приложили видео
 Sergey Krivenkov29 нояб. 2017 г., 10:35
Вы описали такое же решение, как упомянуто в части «Вопрос» выше - воспроизведите пустую анимацию Но вопрос: почему это происходит?

Ваш ответ на вопрос