2011-09-14 4 views
0

일부 데이터 처리를 수행하는 응용 프로그램이 있고 새 항목이 있으면 상태 표시 줄에 사용자에게 알립니다. 프로세스는 설정된 시간에 AlarmManager로 실행됩니다. 모든 것은 정상적으로 작동하지만, 사용자가 애플리케이션을 실제로 사용하는 동안 알림을받는 것을 싫어하는 것이 좋습니다. 이는 AlarmManager가 기본적으로 일시 중지되어야 함을 의미합니다.AlarmManger가 끊임없이 시작하고 중지합니다.

@Override 
public void onResume() 
{ 
     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     Intent myIntent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent, 0); 
     alarmManager.cancel(pendingIntent); 
     alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 600000, 600000, pendingIntent); 
} 

이 완전하지는 않습니다,하지만 난의 최선의 해결책 생각할 수 : 나는 항상 시작입니다 생각할 수있는 유일한 해결책은/유사한이 메인 활동의 onResume 방법에 알람을 중지합니다. 그게 나쁜 습관인지, 아니면 더 나은 해결책이 있는지 궁금해 할뿐입니다. 감사.

답변

0

AlarmReceiver (또는 서비스가 호출하는 서비스)에 앱이 표시되는지 확인하십시오. 앱과 AlarmReceiver/Service 사이에 어떤 상태를 공유해야합니다. onResume 중에 포어 그라운드에 있으며 onPause 중에 백그라운드에있는 AlarmReceiver/Service에 알려주는 기본 Activity를 가질 수 있습니다. 그런 다음 AlarmReceiver/Service는 알람이 울릴 때이 상태를 간단히 확인하고이를 사용하여 알림을 표시할지 여부를 결정할 수 있습니다.

관련 문제