2017-11-07 20 views
0

私のAlarmActivitysingleInstanceです。
私はこの意図してAlarmManagerに登録:AlarmManagerは現在アクティビティを開始していません

Intent intent = new Intent(context, AlarmActivity.class); 
PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

問題:AlarmActivityは、現在開いている間、アラームがオフになったとき、それが起動することはできません。

AlarmActivityでアラームをオフにすると、(onStart()onResume()...)することができます)メソッドを呼び出すきれいな簡単なソリューションを探しています。

私はServiceまたはBroadcastReceiverを使用しません。これは可能ですか?

+0

ジョブスケジューラの使用を検討してください。 –

答えて

0

アラームコードをonResume()に追加すると思います。

@Override 
protected void onResume() { 
    super.onResume(); 
    cancelAlarm(); 

    Long tsLong = System.currentTimeMillis() + 60*1000; //1 minute After 
    String timestamp = tsLong.toString(); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(Long.parseLong(timestamp)); 

    setAlarm(timestamp); 
} 

public void cancelAlarm() { 
    PendingIntent pIntent = createPendingIntent(); 
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    alarmManager.cancel(pIntent); 
    pIntent.cancel(); 

} 

public PendingIntent createPendingIntent() { 
    Intent intent = new Intent(this, AlarmActivity.class); 

    return PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

} 

public void setAlarm(Calendar calendar, PendingIntent pIntent) { 
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
     alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent); 
    } else { 
     alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent); 
    } 
} 

次に、AlarmActivityが1分ごとに作成します。

関連する問題