:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
16/05/04 15:40
(1) AlarmManager의 set 함수 첫 번째 인자를 확인해보세요. 알람 타입이 총 네가지가 있는데 제대로된 타입으로 설정하는지 확인이 필요합니다. 혹은 알람이 울릴 시간을 계산하고 Calendar 클래스에 set 하신 후 절대 시간을 넣어보세요.
(2) Service 내에서 Intent 값을 확인하는 오버라이드 함수가 무엇인가요? onCreate 혹은 onStartCommand에서 확인하실텐데, 첫 호출은 onCreate에서 intent를 확인하시고, 그 후의 호출은 onStartCommand에서 확인해보세요. 만약 위처럼 onStartCommand를 사용하고 계신다면 onStartCommand의 리턴값 설정을 통해 intent 상태를 처리할 수 있으니 이것도 확인해보세요. 제가 아는 지식으로는 이 정도의 조언이 가능합니다. 위를 모두 확인해봐도 문제가 해결되지 않는다면, 힘내세요.
16/05/04 15:48
Dondante님, 먼저 제 질문에 관심을 가지고 답변 달아주셔서 감사 인사 드립니다.
(1)번에 관해서는 첫번째 인자에 alarmManager.setExact(AlarmManager.RTC, System.currentTimeMillis()+interval*100, pIntent); 이렇게 사용하고 있는데, 여러 인자를 넣고 테스트를 해보겠습니다. 아니면 말씀하신대로 캘린더를 이용한 절대시간을 사용하는 방법도 생각할 수 있겠네요. (2)번의 경우가 좀 애매한데요. 지금은 모든 상황에서 onStartCommand 함수 내에서 처리하고 있는데, onCreate에 맨 처음 MainActivity로의 호출을 처리하고, 그 후에는 onStartCommand에서 처리하라는거죠? 이 두 함수가 MainActivity와 Service 그 자체에서 calling 하는 것을 구분하여 실행될지는 미지수네요. onStartCommand의 리턴값 설정에 관한거라면 return Service.START_NOT_STICKY; 이런거 말씀하시는건가요? 제가 아직 많이 부족하여 헛갈리는 부분이 많습니다 ㅠ.ㅠ
16/05/04 16:10
(1) RTC 혹은 RTC_WAKEUP를 사용하시는게 맞기 때문에 첫 번째 인자 문제는 아닌 듯 싶습니다. 이 부분은 애매하네요. 잠시 검색을 해보니 setExact 함수가 4.4 kitkat 디바이스에서 스크린오프 상황에서 정확한 시간에 동작하지 않는 오류가 있었던 것 같긴하네요. 그냥 set 함수를 사용해보시는게 어떨까요?
(2) 이 문제도 마찬가지로 onStartCommand에서 처리하고 있다면 별다른 문제가 없어보입니다. 혹시 꼭 intent extra를 사용해야할 이유가 없다면 action을 사용해서 처리하시는 것도 방법 중에 하나가 되겠네요. ACTION_MAIN, ACTION_SERVICE 등의 final string 값을 static으로 선언해놓으시고 serviceIntent.setAction(ACTION_MAIN); 이런식으로 action을 셋팅하시고, 받는 쪽에서는 intent.getAction() 을 통해서 action값을 받으실 수 있습니다. 마지막으로 onStartCommand의 리턴은 return super.onStartCommand(intent, flags, startId); 이걸로 바꿔보세요.
16/05/04 16:30
setAction을 사용해도 여전히 main쪽 값 밖에 못 가져오네요 ㅠ
Flag인자도 PendingIntent.FLAG_UPDATE_CURRENT로 맞췄는데도 안되네요. 좀 더 삽질이 필요할 것 같습니다. 다시 한 번 감사 드립니다.
|