2017-11-07 9 views
0

AlarmActivitysingleInstance입니다.
나는이 의도로 알람 관리기에 등록 :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 분마다 생성합니다.