2017-09-21 1 views
1

ユーザーが特定のアクティビティに遭遇したときにアラームを設定しました。これは特定の時間の後にトリガされます。 このアラームがすでに起動されているかどうかを確認して、ユーザーがこのアクティビティに戻ったときに再び設定されないようにするにはどうすればよいですか? 私はそれがすでにスケジュールされます場合は、再度設定するが、これをトリガーしないばかりアラームを防ぐことができます。Androidでアラームを1回だけトリガーするにはどうすればよいですか?

alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_NO_CREATE); 
    if (alarmIntent != null) { 
     // Alarm is already set 
     return; 
    } 
    alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, 0); 

しかし、アラームがそうalarmIntentnull

になります後に削除されるように、それはすでに、トリガーだ場合、これは動作しません。

答えて

2

共有設定を使用して、設定されているかどうかを確認できます。

if(!setFlag) 
{ 
    Intent myIntent = new Intent(FirstActivity.this, LogoutService.class); 
    pendingIntent = PendingIntent.getService(FirstActivity.this, 0, myIntent, 0); 
    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.add(Calendar.MINUTE, 10); //Minutes 
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
} 
+0

これは私がやったことですが、アラームが組み込まれたソリューションを持っていることを期待しました –

0

変更PendingIntent PendingIntent.FLAG_CANCEL_CURRENT

alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
0

あなただけのアラームが実行されて初めてファイルを作成し、次のアラームであなたは、ファイルが既に存在していることを確認することができます実行されますすることができます再度アラームを実行する必要はありません。

関連する問題