2

アプリケーションから使用してリマインダーを設定しAlarmManagerています。アラーム イベントの発生時にActivity、Alarmdetails を開始しています。

問題は、活動が開始されると、アプリケーションのタスクも前倒しされることです。パッティングFLAG_ACTIVITY_MULTIPLE_TASKやなど色々試してみFLAG_ACTIVITY_NEW_TASKました。しかし、何もうまくいきません。

これらのフラグを使用すると、別の問題が発生します。私を助けてください。メインコードは次のとおりです。

Intent i = new Intent(this,AlarmDetails.class);
i.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

i.putExtra("hr", hr);
i.putExtra("min", min);
i.putExtra("message", label);

PendingIntent displayIntent = PendingIntent.getActivity(this, 0, i, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            displayIntent);
4

2 に答える 2

0

FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASKあなたが提案したように使用してこの問題を解決しましたが、BroadcastReceiver クラス内からアクティビティを起動しました。

アラームの設定:

Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

そしてレシーバー:

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent newIntent = new Intent(context, MyAlarmActivity.class);
        newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        newIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
        context.startActivity(newIntent);
    }
}

これは私にとってはうまくいきます。アラームが鳴ると、MyAlarmActivity を持つ新しいタスクが作成されます。その新しいアクティビティから戻ると、アラームが鳴る前の場所に戻ります。

于 2012-08-22T10:43:55.843 に答える