繁体   English   中英

从通知启动时防止重新创建活动活动

[英]Prevent recreating alive activity when launching from notification

从 Android Oreo 8.0 (26 API) 开始,当使用代码启动 Activity 时,如果前一个实例没有被销毁并且仍然活着,它不会创建一个新的 Activity,但是在以前的 Android(例如 Marshmallow、Nougat)上它总是会创建一个新的 Activity任何状况之下。

为什么它的行为会因 Android 版本而异?

我想阻止创建一个新的活动实例,并在点击通知时从 Android 23 (Marshmallow) 开始将现有的(如果它仍然存在)放在前面。 目前它只适用于 Oreo Android (26)

val intent = Intent(this, TestActivity::class.java).apply {
    flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}

val pendingIntentt = PendingIntent.getActivity(
    this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT
)

val ... = NotificationCompat.Builder(this, channelId)
    ...
    .setContentIntent(pendingIntent)

如果您想将应用程序的现有实例带到前台,或者在应用程序未运行(前台或后台)时创建一个新实例,则只需在您的Notification使用启动Intent

val intent = getPackageManager.getLaunchIntentForPackage("my.package.name")

您可以尝试使用Intent.FLAG_ACTIVITY_SINGLE_TOP标志

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM