如何在十字图标单击时强制杀死图片和图片 activity?
How to force kill Picture and Picture activity on cross icon click?
我试图在激活图片和图片模式后从任务中终止 activity,到目前为止我尝试了 finish()
、finishAffinity()
、onBackPressed()
,以编程方式设置 excludeFromRecent
但 activity 仍然存在于后台..
当我们点击十字图标时,我们可以在 Google Maps
中看到相同的行为。应用程序仍然存在于后台,但我需要残酷地杀死它:)
<activity
android:name=".PipActivity"
android:launchMode="singleInstance"
android:supportsPictureInPicture="true"
android:resizeableActivity="true"
android:taskAffinity=".PipAffinity"
android:configChanges="orientation|smallestScreenSize|screenLayout|screenSize"
android:windowSoftInputMode="adjustPan|stateHidden"/>
这就是我激发意图的方式:
Intent(context, PipActivity::class.java)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
重要说明:当这个 activity 不会 PiP mode
一切都按预期工作并且 activity 在我需要时正常自杀它!
当我点击这个十字图标时:
pipActivity 中的 onStop 被调用:
override fun onStop() {
cleanView()
finish()
finishAffinity()
setExcludeRecentToKillActivity()
}
private fun setExcludeRecentToKillActivity() {
val am = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val tasks = am.appTasks
if (tasks != null && tasks.size > 0) {
tasks[0].setExcludeFromRecents(true)
}
}
此时 UI 被清理,连接中断。但是系统仍然在后台保留任务,当我点击它时它会自行重启。
我不要这个。右边的任务是关闭的 PiP activity 不应该活着。我想杀了它。可能吗?
所以实际上我找到了解决方案。 finish()
必须更改为 finishAndRemoveTask()
,任务将在后台正确关闭。所以 setExcludeRecentToKillActivity()
不再需要了。
override fun onStop() {
cleanView()
finishAndRemoveTask()
finishAffinity()
}
我试图在激活图片和图片模式后从任务中终止 activity,到目前为止我尝试了 finish()
、finishAffinity()
、onBackPressed()
,以编程方式设置 excludeFromRecent
但 activity 仍然存在于后台..
当我们点击十字图标时,我们可以在 Google Maps
中看到相同的行为。应用程序仍然存在于后台,但我需要残酷地杀死它:)
<activity
android:name=".PipActivity"
android:launchMode="singleInstance"
android:supportsPictureInPicture="true"
android:resizeableActivity="true"
android:taskAffinity=".PipAffinity"
android:configChanges="orientation|smallestScreenSize|screenLayout|screenSize"
android:windowSoftInputMode="adjustPan|stateHidden"/>
这就是我激发意图的方式:
Intent(context, PipActivity::class.java)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
重要说明:当这个 activity 不会 PiP mode
一切都按预期工作并且 activity 在我需要时正常自杀它!
当我点击这个十字图标时:
pipActivity 中的 onStop 被调用:
override fun onStop() {
cleanView()
finish()
finishAffinity()
setExcludeRecentToKillActivity()
}
private fun setExcludeRecentToKillActivity() {
val am = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val tasks = am.appTasks
if (tasks != null && tasks.size > 0) {
tasks[0].setExcludeFromRecents(true)
}
}
此时 UI 被清理,连接中断。但是系统仍然在后台保留任务,当我点击它时它会自行重启。
我不要这个。右边的任务是关闭的 PiP activity 不应该活着。我想杀了它。可能吗?
所以实际上我找到了解决方案。 finish()
必须更改为 finishAndRemoveTask()
,任务将在后台正确关闭。所以 setExcludeRecentToKillActivity()
不再需要了。
override fun onStop() {
cleanView()
finishAndRemoveTask()
finishAffinity()
}