Android - иногда AnimatorSet не запускается
У меня странная проблема: моя игра молода, поэтому она еще очень проста. Когда я выполняю действие (указывать бесполезно), должен начинаться набор аниматоров, а после его завершения я могу повторить его, выполнив действие. Набор аниматоров определен в xml-файле и имеет 2 objectAnimator, который воспроизводится одновременно, но второй имеет небольшое смещение. Вот проблема: в большинстве случаев анимация запускается правильно, когда я в первый раз выполняю действие, возможно, 2 или 3 или более раз, но через несколько раз она больше не запускается, и я не знаю почему. На моем планшете (Android 7) это происходит чаще, чем на моем телефоне (Android 5); на моем планшете иногда анимация никогда не запускается. Это проблема Android, утечка памяти или что-то еще? Я не думаю, что это зависит от моего кода, поэтому я опубликую его, только если он будет запрошен.
У меня была похожая проблема с предыдущей анимацией: это была пользовательская анимация затухания с animatorSet и objectAnimator, определенными в xml: при запуске приложения кнопка должна была исчезнуть через 2 секунды. На моем телефоне все в порядке, но на моем планшете иногда анимация не запускается или останавливается до окончания анимации. Я решил это, поставив setAlpha(1)
в onAnimationEnd
слушателя анимации; первая проблема не решаема, поэтому, поскольку анимация более сложна, она должна правильно запускаться и заканчиваться.
Я обнаружил, что приведенная ниже часть не всегда соответствует действительности.
Сегодня (завтра первоначальный вопрос) я обнаружил, где (или лучше то, что вызывает) проблема: мое изображение для анимации находится в пользовательском макете, в котором также есть пользовательский ProgressBar, который постоянно обновляется (в отдельный поток), и когда он заполнен, он меняет свой фон и возобновляет подсчет. Теперь факт таков: анимация запускается в любое время, когда я хочу, чтобы бар еще не изменил свой фон, но когда он меняется в первый раз, анимация больше не запускается. Почему это происходит и как я могу это исправить?