在android中打开通知时页面不刷新
Posted
技术标签:
【中文标题】在android中打开通知时页面不刷新【英文标题】:Page not refreshing when open notification in android 【发布时间】:2020-10-27 14:02:20 【问题描述】:我正在发送带有意图的booking id,然后带有详细信息的页面应该刷新与该预订id 相关的数据。 问题是,如果用户在详细信息页面并收到通知,则数据不会刷新。
当我将启动模式添加为 SINGLETASK 时,问题正在发生。这是意图代码:
Intent intent = new Intent(getApplicationContext(), MyJobsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("idIs", bookingId);
intent.setAction(bookingId);
pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
我尝试了几个不同的 Intent 标志,但也没有用:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
和
PendingIntent.FLAG_CANCEL_CURRENT
【问题讨论】:
你在 MyJobsActivity 并且你正在收到通知,在点击通知时 MyJobsActivity 没有刷新 rt? 是的,先生@Shalu T D 【参考方案1】:更新你的标志
notificationIntent.flags = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
此标志将活动置于最前面并调用onResume
方法,以便您可以在单击通知后刷新其中的数据。
【讨论】:
你能解释一下你的答案吗? FLAG_ACTIVITY_REORDER_TO_FRONT 此标志将活动置于最前面并调用 onResume 方法,以便您可以在单击通知后刷新其中的数据【参考方案2】:请覆盖 MyJobsActivity
类中的 onNewIntent()
方法。并按如下方式收集意图数据:
override fun onNewIntent(intent: Intent)
super.onNewIntent(intent)
// you can collect the intent data from this intent and
// refresh your MyJobsActivity.
onNewIntent()
被调用用于在其包中将 launchMode 设置为“singleTop”的活动,或者如果客户端在调用startActivity(Intent)
时使用了 Intent#FLAG_ACTIVITY_SINGLE_TOP 标志。在任何一种情况下,当活动在活动堆栈的顶部而不是正在启动的活动的新实例时重新启动时,onNewIntent() 将在具有用于重新启动的 Intent 的现有实例上调用它。
请阅读documentation了解更多信息。
【讨论】:
【参考方案3】:如果您已经处于相同的活动中,并且希望在收到通知后重新开始午餐,那么您需要在 MyJobsActivity
类上覆盖 onNewIntent
。
@Override
protected void onNewIntent(Intent intent)
super.onNewIntent(intent);
//collect your data passed through intent
如果您已经在所需的活动中并重新开始相同的活动,您必须重新开始使用 Intent 标志为FLAG_ACTIVITY_SINGLE_TOP
的活动。在这种情况下,它不会创建新的活动实例,而是调用onNewIntent
,您可以在其中获取通过意图传递的最新数据。
希望这会有所帮助。
【讨论】:
以上是关于在android中打开通知时页面不刷新的主要内容,如果未能解决你的问题,请参考以下文章