当另一个活动处于画中画模式时,有啥方法可以杀死一个活动?
Posted
技术标签:
【中文标题】当另一个活动处于画中画模式时,有啥方法可以杀死一个活动?【英文标题】:Is there any way to kill an activity when its in picture-in-picture mode from another activity?当另一个活动处于画中画模式时,有什么方法可以杀死一个活动? 【发布时间】:2021-06-10 09:23:58 【问题描述】:我有两个活动 ActivityA 和 ActivityB(这个启用了 pip 模式) 当 ActivityB 处于点子模式时,ActivityA 现在来到前台我想从 ActivityA 完成/销毁/杀死 ActivityB strong> 有什么办法吗?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
val supportsPIP = context!!.packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
if (supportsPIP)
enterPictureInPictureMode(mPictureInPictureParamsBuilder!!.build())
【问题讨论】:
到目前为止必须尝试什么来终止活动? 使用 LocalBroadcastManager 确实解决了这个问题 【参考方案1】:在检查了这个答案https://***.com/a/56896347/13373099 之后,我意识到我所要做的就是使用 LocalBroadcastManager 如果有人在执行此操作时遇到问题,这就是我所做的
在活动B中 私有 val mReceiver = 对象:BroadcastReceiver()
override fun onReceive(context: Context, intent: Intent?)
intent?.let intent ->
if (intent.action == "FINISH_ACTIVITY")
finish(); // finish/kill activity also destroys the pip
现在注册监听器
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, IntentFilter("FINISH_ACTIVITY));
在ActivityA
只需发送带有意图操作“完成活动”的广播
val intent = Intent("FINISH_ACTIVITY")
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
【讨论】:
【参考方案2】:另一种方法是将 Activity 的引用保存在单例中,当你想杀死它时,你调用 finish()
并再次将引用设置为 null。
【讨论】:
以上是关于当另一个活动处于画中画模式时,有啥方法可以杀死一个活动?的主要内容,如果未能解决你的问题,请参考以下文章
如何在父进程被杀死/完成时保持子进程处于活动状态(在 Windows 中)
Android画中画模式,打开我的app的另一个activity
当另一个更改客户端时,Telerik RadGrid设置单元格值