마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

알람매니저 재부팅 질문 2 & 부팅시 로그 보는법

0 추천
Settings.java
 
public static  void setAlarm(Context context){
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent2 = new Intent(context,
AlarmReceiver.class);
intent2.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pender = PendingIntent.getBroadcast(
context, 0, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
if(aSelect != 8){
String point = Malarm.getText().toString();
String[] data = point.split("시");
hour = Integer.parseInt(data[0]);
Calendar curTime = Calendar.getInstance();
triggerTime = setTriggerTime();
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, curTime.getTimeInMillis(), 5000, pender);
}
if(aSelect == 8){
alarm.cancel(pender);
}
 
}
 
 
BootReceiver.java
 
public void onReceive(Context context, Intent intent) {
if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
Settings.setAlarm(context);
 
}

 

재부팅시 자꾸 에러가 나는데요 

 

재부팅시 로그는 어떻게 보는거죠??? 어떤걸로 에러나는지 보려해도 알수가없네요 ㅠ.ㅠ

그리고 저런식으로 해놓으면 안되나요 ???

재부팅시 알람설정을 다시하라길래 해놓긴 했는데 자꾸 에러가 뜨네요ㅠㅠㅠㅠㅠㅠㅠㅠ

익명사용자 님이 2015년 3월 8일 질문

1개의 답변

0 추천
 
채택된 답변

BOOT_COMPLETED 이벤트는 매니페스트에 등록했나요?

그게 아니라면 어딘가에서 BootReceiver를 register 하고 있나요?

 

재부팅 이벤트를 잘 등록했는지 우선 확인 먼저 하셔야 합니다.

아래와 같이 로그를 추가하고 로그가 뜨는지 먼저 확인한다음 setAlarm을 호출하세여

public void onReceive(Context context, Intent intent) {

if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
      //Settings.setAlarm(context);
      Log.i("TAG", "BOOT_COMPLETED event received");
}
 

그리고 setAlarm에도 아래 코드는 문제의 소지가 있습니다

String point = Malarm.getText().toString();

재부팅된다음에는 Malarm이라는 view가 null 일 것이므로 NullPointerException이 발생할 것입니다.

setAlarm 메소드에 context말고도 point에 해당하는 값을 파라미터로 넘겨서 처리하기 바랍니다.

 

 

 

Gradler (109,780 포인트) 님이 2015년 3월 9일 답변
우선 답변 감사합니다

파라미터 값 넘기는게

setAlarm(Context context String point) 이런식이면 되는건가요 ?
네 그런식으로 넘겨두 되구요 다른 방법으로는
앱을 켜서 동작시킬 때는 넘길수 있겠지만
재부팅 이벤트를 받았을 때는 넘길 값이 현재로서는 없으니
처음 저장할 때 Preference 영역에 해당 값을 저장했다가
setAlarm에서는 Preference 영역으로부터 값을 불러와서 세팅하는 구조로
하시는게 더 좋을 듯 하네여

프로그래밍에 정답은 없습니다
다만 더 효율적인 방법을 제시해 드리는 것 일 뿐
입맛에 맞는 방향으로 개발하시면 됩니다.
...