2014-02-24 2 views
2

백그라운드에서 실행되는 서비스가 있습니다. 이 서비스를 시작하려면 알람 관리자을 사용하고 있습니다. 그것은 잘 작동하지만 내 장치 또는 시뮬레이터에서 시스템 시계를 변경하면 알람 관리자가 중지됩니다.알람 시계 관리자가 시스템 시계를 변경하면 중지합니다.

public void startAzanService() { 
Calendar cal = Calendar.getInstance(); 
Intent intent = new Intent(this, CheckAzan.class); 
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0); 
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    //repeat the action every 5 secionde 
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5000, pintent); 
} 
+0

M의 두려운 자습서입니다. 논리는 좋지 않습니다. – Farhan

답변

2

이 문제는 시간을 듣고 Broadcast으로 변경하면 해결할 수 있습니다.

1)에 BroadcastReceiver 만들기 Manifest 파일 : - - :

<receiver android:name=".TimeChangeReceiver"> 
     <intent-filter > 
      <action android:name="android.intent.action.TIME_SET"/> 
     </intent-filter> 
</receiver> 

2) 수신기 클래스를 생성 : -

public class TimeChangeReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(final Context arg0, Intent arg1) { 
    //Call your Alarm setting code 
    Calendar cal = Calendar.getInstance(); 
    Intent intent = new Intent(this, CheckAzan.class); 
    PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0); 
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    //repeat the action every 5 secionde 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5000, pintent); 
    } 
} 

* 당신의 돈 가정하면 다음 작업을 수행 `귀하의 코드에 어떤 문제가 없습니다.

link 또한 BroadcastReceiver

+1

그것은 마법처럼 작동합니다 Abd El-Rahman – user3346245