从通知启动活动,应用程序将通过onResume进行最新活动

时间:2018-01-19 10:11:22

标签: android android-intent android-notifications

我遇到通知问题。这一切都很好地从通知启动正确的活动。

问题是当从通知启动新活动并且应用程序已处于后台时。然后首先加载最新的活动(在Resume()上),然后加载该预期活动。在onResume我正在检查会话到期时间。当它过期的用户将被带到登录。在最近的活动中,我没有通知附加信息。

在打开通知并直接进入预期活动时,是否有可能跳过最新活动onResume

    PendingIntent createContentIntent(Context appContext, NotificationData data) {
    Intent notificationIntent = createNotificationIntent(appContext, data);
    if (notificationIntent == null) {
        notificationIntent = new Intent();
    }
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    Bundle extras = createBundle();
    extras.putSerializable(EXTRA_NOTIFICATION_DATA, data);
    notificationIntent.putExtras(extras);

    return createPendingIntentActivity(appContext, notificationIntent);
}

2 个答案:

答案 0 :(得分:0)

修改新的活动清单以包含自定义任务关联,并考虑将launchMode更改为singleTop以防止创建活动的重复:

<activity
            android:name=".your_activity"
            android:launchMode="singleTop"
            android:taskAffinity=":task_2"/>

还要在启动意图中包含Intent.FLAG_ACTIVITY_NEW_TASK

答案 1 :(得分:0)

您遇到的问题是,Android会将您现有的任务带到前台,然后(显然)在从Activity创建Activity之前恢复任务中的顶级Notification }。这听起来像是一个Android bug。

无论如何,为了解决这个问题,您可以尝试让NotificationActivity启动到另一个任务中。为此,请在taskAffinity=""启动的Activity上设置NotificationActivity启动的Notification必须启动另一个Activity,该任务将与您应用的其余部分一起在任务中运行。希望这一切都会在手机解锁后发生,这样您就不会发现onResume()问题。

如果您需要更多帮助,请发布createNotificationIntent()createPendingIntentActivity()以及您的清单相关部分的代码。