4

サーバーからの通知を受信する機能を備えたアプリケーションを開発しました。

問題は、受け取った通知をクリックすると、アプリケーション自体の新しいインスタンスが開くことです

この動作は、アプリがフォアグラウンドにない場合は問題ありませんが、フォアグラウンドにある場合に通知を開こうとすると、アプリの新しいインスタンスが作成され、以前に開いたアプリのインスタンスと重複します。

これを起こしたくないので、アプリがフォアグラウンドにある場合に通知をクリックすると、それを閉じて新しいインスタンスを開く必要があります

通知のクリックイベントを上書きするにはどうすればよいですか?

4

4 に答える 4

5

IntentFlagsで魔法をかける必要があります。インテントにさまざまなフラグを追加してみてください。

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_NEW_TASK);
于 2011-09-05T13:42:10.890 に答える
1

次のように、インテントを保留中のインテントに設定しながら、インテントにフラグを追加できます。

Intent notificationIntent = new Intent(context, activity.class);
            notificationIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
            PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
于 2011-09-05T13:31:01.130 に答える
0

インテントでアクションMAINとカテゴリLAUNCHERを使用すると、既存のインスタンスが再開されます。これは、ランチャーまたは最後に使用したアプリケーションからアプリケーションを起動するのと同じです。おそらくカテゴリLAUNCHERは必要ありません。

于 2011-09-05T13:29:46.723 に答える
-1
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

このようにして、最後のインスタンスとすべてのアクティビティをクリアし、アプリケーションの新しいインスタンスを起動します。

于 2015-06-17T13:01:04.773 に答える