当活动调用 onStop() 时,转换共享元素中断

van*_*boy 5 animation android android-lifecycle android-activity shared-element-transition

我从带有共享元素转换的 ActivityA ActivityB 打开。它工作正常。当我按下“返回”按钮时,共享元素同样可以正常工作,并且我看到了近距离动画。

但是,如果我按下“主页”按钮,然后返回应用程序 (ActivityB),然后单击“返回”转到 ActivityA,则转换不起作用。

三个活动的情况相同。

活动A -(工作)->活动B -(工作)->活动C

之后我开始按“返回”按钮

活动C -(工作)->活动B -(不工作)->活动A

工作 - 这意味着共享元素过渡工作,我看到动画

对于开始活动,我使用

ActivityOptionsCompat options = ActivityOptionsCompat
                        .makeSceneTransitionAnimation(getActivity(), itemView, transitionName);
startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

尝试更改清单(不要工作)

android:name=".ActivityB"
android:launchMode="singleTask"
android:parentActivityName=".ActivityA"
Run Code Online (Sandbox Code Playgroud)

尝试保存共享元素(不要工作)

android:name=".ActivityB"
android:launchMode="singleTask"
android:parentActivityName=".ActivityA"
Run Code Online (Sandbox Code Playgroud)

我注意到在最小化应用程序后,按“返回”时不会调用 onMapSharedElements()。否则呼叫正在发生。

我猜 onStop() 调用会中断共享元素转换。但我无法避免这一点。任何帮助或想法,请

Rob*_*ust 0

我按照这个答案解决了这个问题。

简单地说,只需将以下代码片段添加到onStopActivityB中

override fun onStop() {
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q && !isFinishing) {
        Instrumentation().callActivityOnSaveInstanceState(this, Bundle())
    }
    super.onStop()
}
Run Code Online (Sandbox Code Playgroud)