1

私はfragmentActivity多くの断片を持っています。私のアクティビティ(最初に1つのフラグメントのみを表示)は、次のような保留中のインテントでアラームを起動します。

    AlarmManager am = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);

       Intent intent = new Intent(context,MainFragmentActivity.class);
        intent.putExtra(MainFragmentActivity.IS_LOCKSCREEN, true);

        PendingIntent pendingintent = PendingIntent.getActivity(context,ALARM_ID, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        am.cancel(pendingintent);
        date = wakUp.getTime();
        am.set(AlarmManager.RTC_WAKEUP, wakUp.getTimeInMillis(),
                pendingintent);

そして、アラームが鳴る前にアクティビティを終了します。

アラームが鳴り、アクティビティが起動し、特定のフラグメント(背景が赤)が表示されます。これは、追加MainFragmentActivity.IS_LOCKSCREENがtrueであるためです。

アクティビティを終了し、最近のアプリでアプリケーションを実行します。extraは常にtrueに設定されているため、赤いフラグメントが起動されます。わかりません。余分な値はfalseに設定する必要があります。

ありがとうございました !

4

1 に答える 1

0

エクストラがfalseになるべきだと思う理由はわかりませんが、アクティビティ内で変更していない場合(たとえば、自分でfalseを意図的に入れた場合)、最近のアプリの起動で何度もそれが提供されます。おそらく、あなたは次のことをしたいと思うかもしれません:
1) アクティビティ内のインテントのフラグをクリアします (その後、最近からの起動は変更されたインテントを保持する必要があります)。
または
2)FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS最近のアプリからそのアクティビティを排除する目的で使用する (たとえば、通知での起動フラグの使用に関する詳細については、こちらのディスカッションを参照してください)。

于 2012-09-18T10:10:09.127 に答える