启动现有的singleTask活动

时间:2018-08-25 11:40:42

标签: android android-activity android-transitions

我正在将场景过渡应用于“活动”。说我有2个活动:MainActivity(具有启动模式singleTaskNextActivity,具有启动模式standard。它们具有相同的主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

在以下情况下:

  1. MainActivity通过以下方式启动NextActivity

    startActivity(Intent(this,NextActivity::class.java), ActivityOptions.makeSceneTransitionAnimation(this).toBundle())
    
  2. 场景1之后,NextActivity通过MainActivity返回到finishAfterTransition()

  3. 场景1之后,NextActivity通过以下方式返回到MainActivity

    startActivity(Intent(this,MainActivity::class.java), ActivityOptions.makeSceneTransitionAnimation(this).toBundle())
    

由于MainActivity处于singleTask启动模式,因此2和3应该导致相同的任务堆栈行为:NextActivity完成并且将用户带回到MainActivity

现在的问题是,在1和2中,过渡播放正确,但是在3中,过渡不播放。详细地,NextActivity保留默认动画(向下滑动到屏幕外),而MainActivity保持透明,并且可见墙纸,但不可重复。

在过渡侦听器中添加一些println行之后,我发现在3中,NextActivity的退出过渡已启动,尽管显示不正确。并且MainActivity的重新进入转换尚未开始。

这种奇怪行为的原因是什么?

作为参考,活动的代码(在Kotlin中)为here

0 个答案:

没有答案