代码之家  ›  专栏  ›  技术社区  ›  anon

Android:如何避免点击通知调用onCreate()

  •  16
  • anon  · 技术社区  · 14 年前

    在我的应用程序中,如果发生特殊情况,我会用通知通知用户:

    public void triggerNotification(String msg) {
            notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            Intent contentIntent = new Intent(this, ABC.class);
            Notification notification = new Notification(R.drawable.icon, msg, System.currentTimeMillis());
            notification.setLatestEventInfo(this, "ABC", msg, PendingIntent.getActivity(this.getBaseContext(), 0, contentIntent, PendingIntent.FLAG_CANCEL_CURRENT));
            notification.flags = Notification.FLAG_AUTO_CANCEL;
            notificationManager.notify(notificationCounter, notification);
            notificationCounter++;
    }
    

    3 回复  |  直到 14 年前
        1
  •  17
  •   pheelicks    14 年前

    如果应用程序已在运行,则要将其置于前台,您需要在意图上设置不同的标志:

    contentIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    

        2
  •  8
  •   user2038378    11 年前

    建议使用FLAG\u ACTIVITY\u CLEAR\u TOP和FLAG\u ACTIVITY\u SINGLE\u TOP只能部分解决问题。Android清单中的活动也应该应用这些设置,以便从主屏幕启动活动具有相同的行为。如果没有这些属性,可以启动活动的多个实例。

    <activity android:name="foo"
              android:clearTaskOnLaunch="true"
              android:launchMode="singleTop"
              android:label="@string/app_name">
    
        3
  •  0
  •   adam2645    8 年前

    我发现如果你用 Intent contentIntent = new Intent(this, ABC.class); onCreate(); 不管设置了什么标志。

    Intent contentIntent = getIntent(); 跳过 onCreate(); 这就意味着 onStart();