【发布时间】:2020-12-31 12:16:39
【问题描述】:
从 Android Oreo 8.0 (26 API) 开始,当使用代码启动 Activity 时,如果之前的实例没有被销毁并且仍然存在,它将不会创建新的 Activity,但在之前的 Android(例如 Marshmallow、Nougat)上它总是会创建无论如何都是新的活动。
为什么它的行为会因 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)
【问题讨论】:
-
这听起来像是 Android 8 中的一个错误。使用这组
Intent标志,它应该始终销毁所有现有活动并创建一个新实例。
标签: android android-intent android-activity android-notifications android-pendingintent