2013-03-03 7 views
0

잘 에뮬레이터에서가 아니라 작업이 설정 알람에 대한 내 코드입니다 :알람 관리기는 실제 장치

public void SetAlarm(Context context, int tag, long time){ 
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent i = new Intent(context, Alarm.class); 
    i.putExtra("position", tag); 
    PendingIntent pi = PendingIntent.getBroadcast(context, tag, i, PendingIntent.FLAG_CANCEL_CURRENT); 
    am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ time, pi); // Millisec * Second * Minute 
} 

이 내 onRecieve 메도입니다 :

public void onReceive(final Context context, Intent intent){ 
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "my wak up lo"); 
    wl.acquire(); 

    position = intent.getIntExtra("position", -1);   
    new PostManager(context, position); 

    wl.release(); 
} 

이 에뮬레이터 잘 노력하고 있습니다. 동시에 에뮬레이터와 실제 장치에서 24 시간 후에 트리거 할 알람을 설정합니다. 작업은 에뮬레이터에서 제대로 수행되지만 실제 장치에서는 수행되지 않습니다. 이 문제가 PowerManager.FULL_WAKE_LOCK 또는 다른 이유로 발생합니까? 나는 열심히 노력했지만 모든 해결책을 찾지 못했습니다.

+0

'setAlarm()'메소드에서'time' 변수의 값이 올바른지 확실합니까? 일부 디버그 로깅을 추가하고 logcat을 점검하여 알람이 실제로 있어야한다고 생각되는 시간에 설정되는지 확인하십시오. –

+0

@DavidWasser :'time'은 에뮬레이터와 실제 장치에 알람을 설정했기 때문에 정확합니다. 4 시간 후에 경보가 울려 야합니다. 에뮬레이터에서 트리거했지만 실제 장치에서는 트리거되지 않습니다. 실제 장치 알람에서 나는 4 시간 미만의 알람을 설정한다. 내 경보가 내 장치를 잠에서 깨울 수 없다고 생각합니다. – Shoshi

+0

나는'PowerManager.FULL_WAKE_LOCK' 대신'PowerManager.PARTIAL_WAKE_LOCK'을 시도했지만 작동하지 않습니다. – Shoshi

답변

0

죄송합니다. 문제는 PostManager입니다. PostManager에서 나는 다른 문자열로 세션 쿠키를 검사하고있었습니다. 그래서 어떻게 될까? 여기는 answwer입니다. 4 시간 전에는 세션 쿠키가 cookiemanager에 남아 있으므로 .equal(another_string)에 의한 검사는 정상적으로 작동합니다. 하지만 4 시간 후에 세션 쿠키가 만료되고 .equal(another_string) NullPointerException이 발생한다고 생각합니다. 그래서 나는 쿠키가 내가 얻었던 것이 null인지 아닌지를 확인했다. 이게 내 문제를 해결해. 다시 미안.