Как узнать, запущена ли деятельность без перехода?

У меня есть прецедент, когда я в основном запускаю операцию с переходом, но это не тот случай, когда вы открываете ее из ящика навигации.

Чтобы сохранить переход гладким, у меня есть Transition.TransitionListener, в котором я запускаю некоторое обновление пользовательского интерфейса при выполнении перехода.

Итак, у меня есть что-то вроде этого:

public class SomeActivity extends Activity {

    public void onCreate(Bundle savedInstanceState){ 
        // ...
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
            sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
                // ...
                @Override
                public void onTransitionEnd(Transition transition) {
                    doSomeUiUpdating();
                }
            });
        } else { // Pre-Lollipop
            doSomeUiUpdating();
        }
    }
}

Это хорошо работает при запуске Activity с анимацией, но , как я могу узнать, запущена ли Activity без перехода, чтобы я мог вызвать doSomeUiUpdating()?

Я уверен, что должен быть простой метод в Activity, Window, Transition или где-то, что я упустил. Я не хочу ретранслировать на вызывающую активность, чтобы установить некоторый пакет, который сообщает, отображается ли анимация или нет.

Ответы

Ответ 1

Вы можете попробовать onTransitionStart из TransitionListener установить несколько логических isAnimationStarted.

public class SomeActivity extends Activity {

    private boolean isAnimationStarted = false;

    public void onCreate(Bundle savedInstanceState) { 
        // ...
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
            sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
                // ...
                @Override
                public void onTransitionEnd(Transition transition) {
                    doSomeUiUpdating();
                }

                @Override
                public void onTransitionStarted(Transition transition) {
                    isAnimationStarted = true;
                }
            });
        }
    }

    public void onStart() {
        if (!isAnimationStarted) {
            doSomeUiUpdating();
        }
    }

}