【发布时间】:2022-01-13 20:41:26
【问题描述】:
我正在使用 Android TaskStackBuilder 在单击通知时使用预定义堆栈创建通知。
在应用中我有 2 个活动:
- MainActivity 启动器
- 活动B
在主要活动中,我使用 TaskStackBuilder 和以下堆栈显示通知:[MainActivity(launcher intent), ActivityB]
当通知显示时,我拉下状态栏并单击通知,然后按预期看到 ActivityB,当单击后退按钮时,我也按预期看到 MainActivity,但它的 onCreate 被调用! 对此有解释吗?这实际上意味着 MainActivity 已经完全重启了!为什么?
MainActivity launchMode:"singleTop"
此外,似乎在单击通知后会创建一个新的 MainActivity,而不是恢复已打开的原始 MainActivity。 (hash不一样,调用了原来的MainActivity onDestroy!)
这样创建的通知待处理意图:
private fun createPendingIntent() : PendingIntent {
val stackBuilder = TaskStackBuilder.create(applicationContext)
stackBuilder.addNextIntentWithParentStack(applicationContext.packageManager.getLaunchIntentForPackage(applicationContext.packageName))
stackBuilder.addNextIntent(Intent(applicationContext, ActivityB::class.java))
return stackBuilder.getPendingIntent(0, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
}
通知显示如下:
private fun showNotification() {
val pIntent = createPendingIntent()
val builder = NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Have a nice day")
.setContentText("Take care")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pIntent)
val notification = builder.build()
with(NotificationManagerCompat.from(this)){
notify(100, notification)
}
}
【问题讨论】:
标签: android android-notifications