TL; DR 当我从一个活动转到另一个活动后再点击工具栏中的导航图标时,我的应用程序被最小化(好像按下了主页按钮)。
详细的行动流程:
FLAG_ACTIVITY_REORDER_TO_FRONT
FLAG_ACTIVITY_REORDER_TO_FRONT
启动Activity1(此时此活动已存在,因此被带到前面)我知道应用程序已最小化,因为当我打开它时,Activity1在屏幕上显示一个打开的抽屉
没有异常或日志(级别为Verbose),这只发生在OnePlus Two上(该应用程序在Nexus 4上运行正常)
答案 0 :(得分:0)
就我而言,我需要在2个不同的堆栈之间切换。我使用FLAG_ACTIVITY_REORDER_TO_FRONT
处理startActivity
和finish()
。
但是我和您一样有同样的问题,在一种情况下,它会最小化:
活动类A(实例1)->打开新的活动类A(实例2)->活动类B->通过FLAG_ACTIVITY_REORDER_TO_FRONT
,然后按FLAG_ACTIVITY_REORDER_TO_FRONT
切换到活动类A(实例2)返回到(实例1)将最小化(转到背景),但是如果我将其设为前台,它确实完成了(),则它会由于未知原因而回到背景。
只有在堆栈上连续有两个A类实例时才会发生。我通过adb shell dumpsys window windows | grep 'Window #'
在我尝试了很多FLAG
组合但都没有成功之后,我想到了一个骇客的主意,即创建一个Distinct
活动类。
虽然我已经能够检测到这是堆栈上的同一类(使用registerActivityLifecycleCallbacks
来推送/弹出活动列表堆栈),但是当我想返回时,我只需调用Distinct
类并立即在finish()
中使其onCreate()
。然后在finish()
代码上将FLAG_ACTIVITY_REORDER_TO_FRONT
类A的实例1。由于Distinct类不是A的同一个类,因此它可以FLAG_ACTIVITY_REORDER_TO_FRONT
实例1和关闭实例2很好。
[更新]
这个答案实际上是有问题的,但是最终我找到了更好的方法,并写出答案here。