Intent - if activity is running, bring it to front, else start a new one (from notification) Ask Question

Intent - if activity is running, bring it to front, else start a new one (from notification) Ask Question

私のアプリには通知があり、当然ながらフラグなしで毎回新しいアクティビティが開始されるため、複数の同じアクティビティが重なって実行されることになりますが、これは間違っています。

私がやりたいことは、通知の保留中のインテントで指定されたアクティビティを、すでに実行中の場合は最前面に表示し、そうでない場合は開始することです。

今のところ、その通知に対する意図/保留中の意図は

private static PendingIntent prepareIntent(Context context) {
    Intent intent = new Intent(context, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

    return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}

奇妙なことに、うまくいくときもあれば、うまくいかないときもあります... フラグのあらゆる組み合わせをすでに試したような気がします。

ベストアンサー1

これを使用することができます:

<activity 
   android:name=".YourActivity"
   android:launchMode="singleTask"/>

同じように動作します"singleInstance"が、奇妙なアニメーションは表示されません。

おすすめ記事