1

私は機能のような目覚まし時計を持っているアンドロイドプロジェクトに取り組んでいます。同時に複数の全画面アンドロイド通知が積み重ねられない

アラームインスタンスごとにintentServiceをスケジュールします(たとえば、午後9時に起動します)。このintentServiceは通知を作成して表示します。通知にはfullScreenIntentが含まれています。これは期待どおりに動作し、アクティビティを起動します。私はこれを行うには、次のコードを使用します。

alarmActivityIntent = new Intent(this, AlarmActivity.class); 
PendingIntent alarmActivityPendingIntent = PendingIntent.getActivity(this, alertSchedule.getIntentId(), alarmActivityIntent, PendingIntent.FLAG_CANCEL_CURRENT); 
mBuilder.setFullScreenIntent(alarmActivityPendingIntent, true); 
Notification mNotification = mBuilder.build(); 
mNotificationManager.notify(alertSchedule.getIntentId(), mNotification); 

この2つのアラームは、特定の時間に行動の変化を起動するように設定されている場合のみ、1つのアラームがしかし、特定の時間に起動するように設定されている場合期待通りに動作します。

最初のfullScreenIntentでそのアクティビティを開始し、そのアクティビティが終了したら次のアクティビティを表示します。私は、タスクスタックを構築し、これらのアラームインテントをその上にプッシュしたいと考えています。しかし、これは私には全く新しいものです。

これらの通知をグループ化することはできますか?

答えて

0

フルスクリーンIntent機能を使用している場合は、IntentServiceまたはNotificationをまったく使用する必要はありません。あなたが起動すると、があなたのActivityを起動させるだけです。

タスクスタックを構築したくない、それはすべてあまりにも複雑です。同時に発火するアラームが複数ある場合は、AlarmManagerを毎回同じActivityに開始させることができます。このActivityの起動モードをsingleTop(マニフェスト内)に設定すると、アラームが発生したときにActivityが既に表示されている場合は、Activityの別のインスタンスが既存のものの上に作成されず、代わりにIntent既存のActivityのインスタンスでonNewIntent()を呼び出してください。 onNewIntent()では、ユーザーが現在表示されているActivityを完了したときに処理されるキューにIntentのデータ(追加)を保存することができます。これを行うには、ユーザがBACKボタンを押して現在のActivityを終了したときに、キュー内で追加のアラームが待機しているかどうかを確認できるように、onBackPressed()をオーバーライドするだけです。何もない場合はsuper.onBackPressed()に電話してActivityを完成させることができます。キューに何かがある場合は、キュー内の最初の要素を削除し、その内容をActivityに表示することができます。キューが空になるまで続ける。

+0

こんにちはDavidさん、ありがとうございました。インテントサービスの理由は、フルスクリーンインテントを使用することはユーザーのオプション機能です。これを実装する正しい方法でしょうか?私はまだ彼らに通知を得ることを望んで、ちょうど画面が起きないようにする。 –

+0

必要に応じて 'Notification'を使用することはできますが、どちらの場合でも解決するはずです。 'Notification'は既に画面にアラームがある場合にアラームをキューに入れるべき' Activity'を起動します。 –

関連する問題