MainActivityに入るスプラッシュ画面の2つのアクティビティしかないかなり基本的なアプリがあります。AlarmManagerを使用して起動する固定時間の通知を作成しました。現在、スプラッシュ画面中にAlarmManagerを実行しています。私には2つの問題があります。1つ:AlarmMangerはスプラッシュアクティビティに含まれているため、アプリが起動されるたびに実行されます。そのため、通知の時間が過ぎた場合、アプリはすぐに通知を送信します。二:通知の時間がまだ発生していない場合、MainActivityで通知をクリアするための呼び出しがあり、通知がまだ発生していないため、通知をクリアするための呼び出しがMainActivityをクラッシュさせるため、アプリがクラッシュします。MainActivityをクラッシュさせるのは明確な通知呼び出しであることがわかっています。これは、呼び出しをコメントアウトすると、アプリが正常に実行されるためです。
質問:アプリが起動されるたびに通知が読み込まれないように通知をコーディングする方法はありますか?また、アプリが起動していなくてもアプリがクラッシュしないように、通知ビットをクリアに書き込むことはできますか?スプラッシュアクティビティにある通知は次のとおりです。
private void launchAlarmManager() {
//---- ALARM MANAGER ------
//---use the AlarmManager to trigger an alarm---
AlarmManager aMan = (AlarmManager) getSystemService(ALARM_SERVICE);
//---get current date and time---
Calendar alCal = Calendar.getInstance();
//---sets the time for the alarm to trigger---
alCal.set(Calendar.HOUR_OF_DAY, 12);
alCal.set(Calendar.MINUTE, 25);
alCal.set(Calendar.SECOND, 00);
//---PendingIntent to launch activity when the alarm triggers---
Intent iDN = new Intent("com.myapp.DISPLAYNOTIFICATIONS");
PendingIntent pendA = PendingIntent.getActivity(this, 0, iDN, 0);
//---sets the alarm to trigger---
aMan.set(AlarmManager.RTC_WAKEUP, alCal.getTimeInMillis(), pendA);
//---- END ALARM MANAGER ------
MainActivityのキャンセル通知ビットは次のとおりです。
NotificationManager nm;
//---cancel the notification by getting the Unique ID from the DisplayNotification class---
nm.cancel(getIntent().getExtras().getInt("uID"));