如果 Activity 进入 PictureInPicture 模式,则不会调用 onActivityResult

Posted

技术标签:

【中文标题】如果 Activity 进入 PictureInPicture 模式,则不会调用 onActivityResult【英文标题】:onActivityResult not called if Activity went into PictureInPicture mode 【发布时间】:2019-10-27 03:33:44 【问题描述】:

活动

活动A:内容列表 活动B:玩家

流程

活动A ==> 活动B

    活动A 使用startActivityForResult 启动活动B Activity B 可能会进入画中画模式 活动B 调用setResult 然后finish onActivityResult 来自 Activity A 被调用

问题

当 Activity B 进入画中画时,onActivityResult 不会被调用。

我知道 Activity B 在进入画中画时会从 Activity A 的任务堆栈中分离出来,但我希望 startActivityForResult 能够按预期运行。这是一个错误还是预期的?

任何解决方法将不胜感激。另外,我最后的手段是重新做这一切并使用内部广播来传达这两个活动。也欢迎对此发表评论。

谢谢!

【问题讨论】:

这很奇怪,你能发布你的代码吗? 【参考方案1】:

我不确定 PIP 模式下的活动是否被视为暂停。 但是多简历功能有一些发展。 要在 android P 中选择加入此行为,请在您的应用清单中添加以下元数据:

<meta-data android:name="android.allow_multiple_resumed_activities" android:value="true" />

你可以阅读这个here。

【讨论】:

确实,Activity 保持在paused 状态,这可能会阻塞对onActivityResult 的调用。但是,我需要一个适用于常规设备的解决方案,而不是折叠设备,也适用于 Android P 之前的设备。谢谢,+1! 正如您所说,目前最好的方法是使用广播,直到 Google 团队处理此问题。 :-)

以上是关于如果 Activity 进入 PictureInPicture 模式,则不会调用 onActivityResult的主要内容,如果未能解决你的问题,请参考以下文章

activity and task

Activity的启动模式全解

Android手机清理内存后Activity处于哪个状态

android中 进入到下一个activity时 不销毁前一个怎么做

分享:Android入门开发之销毁activity

无apk,怎么获取app的activity