从 Android Oreo 8.0 (26 API) 开始,当使用代码启动 Activity 时,如果先前的实例没有被销毁并且仍然存在,它不会创建新的 Activity,但在以前的 Android(例如 Marshmallow、Nougat)上,它总是创建无论如何都是一个新 Activity 。
为什么它的行为因 Android 版本而异?
我想阻止创建新的 Activity 实例,并在单击通知时从 Android 23 (Marshmallow) 开始将现有的 Activity 实例置于前面(如果它仍然存在)。目前它只能从 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)
最佳答案
如果您想将应用程序的现有实例带到前台,或者在应用程序未运行(前台或后台)时创建一个新实例,则只需在您的通知
:
val intent = getPackageManager.getLaunchIntentForPackage("my.package.name")
关于android - 从通知启动时防止重新创建 Activity Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63873057/