当一个活动处于画中画模式时,有什么方法可以从另一个活动中杀死它吗



我有两个活动ActivityAActivatyB(这一个启用了pip模式(当ActivityB处于pip模式时,ActivityA出现在前台,现在我想从ActivityA中完成/销毁/杀死ActivityB有什么办法吗?

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())
}
}
}

检查此答案后https://stackoverflow.com/a/56896347/13373099我意识到我所要做的只是使用LocalBroadcastManager如果有人在实现这一点时遇到困难,以下是我所做的

活动B

private 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));

活动A

只是发送具有意图的广播动作";完成活动";

val intent = Intent("FINISH_ACTIVITY")
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)

另一种方法是将对活动的引用保存在singleton中,当您想终止它时,您可以调用finish()并将引用再次设置为null。

相关内容

  • 没有找到相关文章

最新更新