Oreo: desativar animação de transição de atividade
Preciso desativar a animação de transição de atividades para todas as telas do meu aplicativo. A solução anterior funcionou bem para todas as versões do Android:
<style name="base_theme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowAnimationStyle">@null</item>
</style>
... mas para o Android 8 "Oreo", a tela preta fica piscando a cada transição (movimento para frente ou para trás). I.e. ainda não há nenhuma animação, mas ocorre um piscar muito irritante (90% de chance, ~ 20-30 milissegundos, a tela inteira).
De acordo com a minha "pesquisa":
não depende do conteúdo da atividade e é reproduzido com atividades vaziasnão há nenhum trabalho em segundo plano que possa atrasar o processo de transiçãoIntent.FLAG_ACTIVITY_NO_ANIMATION também piscaoverridePendingTransition (0,0) também não funcionaA única solução que encontrei:
Definir uma animação de transição vazia
<?xml version="1.0" encoding="utf-8"?>
<set />
e aplicá-lo a todas as atividades no aplicativo (onCreate & finish)
overridePendingTransition(R.anim.animation_activity_none, R.anim.animation_activity_none);
Pergunta, questão:
É algum tipo de nova restrição para o Oreo (ou seja, recurso), ou bug de plataforma, ou talvez o problema do aplicativo? Existem outras soluções?
[ATUALIZAR]
Mais uma descoberta. Certifique-se de chamar o par Activity finish () e overridePendingTransition () no thread principal! Caso contrário, ocorrerá uma corrida de encadeamentos e overridePendingTransition não aplicado às vezes.
[ATUALIZAR]
O Google confirmou que é um bug no Android 8.0, presumivelmente corrigido no 8.1. Portanto, a correção "animação vazia" é válida por anos, até minSdkVersion == 27.