我正在设置通知
Intent intent = new Intent(ctx, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY);
PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pi);
mNotificationManager.notify(MainActivity.NOTIFICATION_RESULT, mBuilder.build());
当我收到通知时,MainActivity.onNewIntent()仅因某种原因每隔一次被调用一次。我在那里有一个调试日志语句,实际上每隔一次,日志就不会触发。
有什么想法吗?
答案 0 :(得分:1)
我不确定您的要求是什么,但 onNewIntent 在docs明确声明
这用于将launchMode设置为“singleTop”的活动 他们的包,或者如果客户端使用FLAG_ACTIVITY_SINGLE_TOP标志 当调用startActivity(Intent)时。在任何一种情况下,当活动 在活动堆栈的顶部而不是新的重新启动 正在启动的活动的实例,将调用onNewIntent() 在具有用于重新启动的Intent的现有实例上 它
由于您未使用 SINGLE_TOP 标志,因此行为可能不一致。
在任何情况下, onNewIntent 的目的是为已经运行的Activity发送新意图。因此,如果您的活动未运行并且您单击通知以启动它,则不会调用 onNewIntent 。但是您将接到 onCreate 的电话,然后 onResume 。第二次点击通知时,活动必须正在运行,因此您不会再次 onCreate ,而是 onNewIntent 。
要对此进行测试,请将日志添加到 onCreate 和 onNewIntent 。