从通知中刷新活动,而不重新创建它



我正在尝试在我的android应用程序中实现通知。当用户点击通知时,如果活动还没有运行,我会运行它。。但是,如果活动已经在运行,我不想重新创建它,我只想通过从onNewIntent函数截取intent来刷新数据。问题是,每次单击通知时,都会重新创建活动,并且不会调用onNewIntent函数。

当我从服务创建通知时,就会出现问题。但是,当我从将要运行的同一个活动创建通知时,一切都很好。

我在互联网上搜索并尝试了我找到的所有解决方案,但它仍然不起作用

我尝试了几种意向标志的组合,但没有任何效果

这是我的代码

val intent : Intent = Intent(this, HomeActivity::class.java)
finalIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
val pendingIntentFlags : Int = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
{
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
}
else
{
PendingIntent.FLAG_UPDATE_CURRENT
}
val pendingIntent : PendingIntent? = TaskStackBuilder.create(context).run {
addNextIntentWithParentStack(finalIntent)
getPendingIntent(0, pendingIntentFlags)
}
val notification = NotificationCompat.Builder(context, type.channelId)
.setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setCategory(Notification.CATEGORY_SERVICE)
.setDefaults(Notification.DEFAULT_ALL)
.setAllowSystemGeneratedContextualActions(true)
.setOnlyAlertOnce(true)
.setAutoCancel(true)
.setLocalOnly(true)
.setOngoing(false)
.setSilent(false)
.setSmallIcon(R.drawable.icon_notification)
.setContentIntent(pendingIntent)
.build()
notificationManager?.notify(NOTIFICATION_ID, notification)

您只需在活动的清单中将启动模式属性设置为singleInstance,然后仅使用FLAG_ACTIVITY_NEW_TASK启动。

让您的通知发送一个广播。在您的活动中,您应该注册一个动态广播接收器。这将允许您刷新活动中的内容,而无需重新加载。

对于活动未运行的情况,您应该在清单中定义一个启动活动的广播接收器。当您的活动开始时,请禁用广播接收器,并在活动停止时重新启用它。

最新更新