如何在活动之间的转换完成时得到通知?

How to get notified when a transition between activities have finished?

正如标题所说...

我正在使用活动之间的转换,并且我希望为这两个活动设置某种侦听器(或事件),用于转换完成时和开始前。

下面是创建转换的示例代码:

    final Intent intent = new Intent(activity, TargetActivity.class);
    if (initialQuery != null)
        intent.putExtra(EXTRA_INITIAL_QUERY, initialQuery);
    final String transitionName = activity.getString(R.string.transition_name);
    ViewCompat.setTransitionName(viewToTransitionFromAndTo, transitionName);
    final ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
            viewToTransitionFromAndTo, transitionName);
    ActivityCompat.startActivityForResult(activity, intent, requestCode, options.toBundle());

您可以将侦听器添加到您使用的任何转换。例如:

getWindow().getSharedElementTransition().addListener(listener);

这将监听转换本身何时开始和结束。但是,它不会为您提供完整的 activity 转换信息。例如,调用 activity 不知道被调用 activity 何时完成转换。

假设顶部的过渡未标记为半透明,当顶部 activity 变得不透明时,底层过渡将被告知停止 -- onStop() --。这并不意味着过渡已经完成,它只是意味着顶部 activity 的淡入已经完成。不过,我想不出 activity 停止后您想做什么。但是,当 activity 是半透明的时,这将无济于事。

所以,不,如果你想让两个 Activity 都知道转换,你将不得不入侵它。被调用的 activity 总是知道转换何时完成(使用侦听器)进入调用 activity 总是在退出时知道。