onNewIntent没有被调用 - 只是每隔一次?

时间:2015-03-28 20:45:32

标签: android

我正在设置通知

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()仅因某种原因每隔一次被调用一次。我在那里有一个调试日志语句,实际上每隔一次,日志就不会触发。

有什么想法吗?

1 个答案:

答案 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