[英]Android navigation up about notification with TaskStackBuilder
[英]Android notification with TaskStackBuilder unexpected behavior
我正在使用 Android TaskStackBuilder 在單擊通知時使用預定義的堆棧創建通知。
在應用程序中,我有 2 個活動:
在主要活動中,我使用 TaskStackBuilder 和以下堆棧顯示通知:[MainActivity(launcher intent), ActivityB]
當通知顯示時,我拉下狀態欄並單擊通知,然后按預期看到 ActivityB,當單擊后退按鈕時,我也按預期看到 MainActivity,但它的 onCreate 被調用? 對此有解釋嗎? 這實際上意味着 MainActivity 已經完全重啟了! 為什么?
MainActivity 啟動模式:“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)
}
}
我想我找到了更好的方法。 我使用的是 PendingIntent,而不是使用 TaskStackBuilder。 getActivities允許提供一系列 Intent,這效果更好,並且 MainActivity 在從頂級活動返回時沒有重新啟動。
這里我用它
private fun createPendingIntent(): PendingIntent {
val rootIntent = applicationContext.packageManager.getLaunchIntentForPackage(applicationContext.packageName)
val nextIntent = Intent(applicationContext, ActivityB::class.java)
return PendingIntent.getActivities(applicationContext, 0, arrayOf(rootIntent, nextIntent), PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT )
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.