PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2016/05/04 14:49:38
Name F.Nietzsche
Subject [질문] 안드로이드 서비스 관련 질문입니다.
안녕하세요.

안드로이드 초하수가 질문 드립니다. ㅠ.ㅠ

백그라운드에서 주기적으로 작업을 하는 Service를 생각하고 있습니다.

처음에는 MainActivity에서 startService를 이용해 띄운 후에

Service 내에서 AlarmManager를 이용하여 작업을 진행하고 일정 시간 후에 다시 Service를 실행합니다.
(즉 Service 내에서 재귀적인 호출이 이루어집니다.)

여기에서 질문이 두가지 있습니다..

(1) Alarm을 set 했는데 실행 시간이 일정하지 않습니다.
interval초 후에 실행되도록 System.currentTimeMillis()+interval*1000 으로 인자를 전달하였는데
실행 시점이 제각각입니다.

(2) MainActivity에서 이 Service를 호출했을 때와 Service 내에서 재귀호출을 했을 때 동작이 달라야 합니다.
각 Service 호출 시 putExtra("caller","Main"), putExtra("caller","Service") 등으로 인자를 넣어주었는데요.
제 생각과는 다르게 Service 내에서 getStringExtra("caller")의 값을 보면 항상 Main이 찍힙니다.

위의 두 가지 문제를 어떻게 해결할 수 있을까요?
미리 감사 드립니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
Dondante
16/05/04 15:40
수정 아이콘
(1) AlarmManager의 set 함수 첫 번째 인자를 확인해보세요. 알람 타입이 총 네가지가 있는데 제대로된 타입으로 설정하는지 확인이 필요합니다. 혹은 알람이 울릴 시간을 계산하고 Calendar 클래스에 set 하신 후 절대 시간을 넣어보세요.

(2) Service 내에서 Intent 값을 확인하는 오버라이드 함수가 무엇인가요? onCreate 혹은 onStartCommand에서 확인하실텐데, 첫 호출은 onCreate에서 intent를 확인하시고, 그 후의 호출은 onStartCommand에서 확인해보세요. 만약 위처럼 onStartCommand를 사용하고 계신다면 onStartCommand의 리턴값 설정을 통해 intent 상태를 처리할 수 있으니 이것도 확인해보세요.

제가 아는 지식으로는 이 정도의 조언이 가능합니다. 위를 모두 확인해봐도 문제가 해결되지 않는다면, 힘내세요.
F.Nietzsche
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; 이런거 말씀하시는건가요?

제가 아직 많이 부족하여 헛갈리는 부분이 많습니다 ㅠ.ㅠ
Dondante
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); 이걸로 바꿔보세요.
F.Nietzsche
16/05/04 16:30
수정 아이콘
setAction을 사용해도 여전히 main쪽 값 밖에 못 가져오네요 ㅠ
Flag인자도 PendingIntent.FLAG_UPDATE_CURRENT로 맞췄는데도 안되네요.
좀 더 삽질이 필요할 것 같습니다.

다시 한 번 감사 드립니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
82452 [질문] 숨 몇분 참으실 수 있나요? [13] 레너블10404 16/05/04 10404
82451 [질문] [LOL] 교차선택 질문입니다. [2] 광개토태왕1500 16/05/04 1500
82450 [질문] 시빌워 어떤상영관에서 봐야하나요?? [5] kogang20011659 16/05/04 1659
82449 [질문] 저렴한 아웃도어용 카메라 추천 부탁드립니다. [1] 카푸치노1452 16/05/04 1452
82448 [질문] [LOL] MSI 외국팀들의 한국 멤버 비중은 어떤가요? [3] 솔지2126 16/05/04 2126
82447 [질문] skt 요금제 변경시 할인반환금에 관한 질문입니다. 박하선1172 16/05/04 1172
82446 [질문] [피온3] 몇가지 질문입니다 [2] 첸 스톰스타우트2001 16/05/04 2001
82445 [질문] [오버워치] 베타키 남으시는 분 있을까요? [4] 어흥1850 16/05/04 1850
82444 [질문] [오버워치] 관련 질문드립니다. Lelouch Lamperouge1389 16/05/04 1389
82443 [질문] [LOL] 베인 구인수 격노검 ...패치가 될까요? [6] 삭제됨3803 16/05/04 3803
82442 [질문] 왕좌의 게임 시즌5 질문입니다 [7] Anthony Martial2087 16/05/04 2087
82441 [질문] 군산으로 여행을 갑니다. [3] 영혼의공원2336 16/05/04 2336
82440 [질문] [김포공항] 맛집 질문드립니다. 풍각쟁이1729 16/05/04 1729
82439 [질문] 서울가는데 몇가지 질문입니다. [7] 아스날2183 16/05/04 2183
82438 [질문] 수육 삶을때 넣는 술 관련 질문입니다 [9] 정지연3261 16/05/04 3261
82437 [질문] 노트북 키보드에 묻은 기름때 제거하는방법 알고 계시는분... [3] 패스파인더8332 16/05/04 8332
82436 [질문] 렌즈 처음 껴봤는데 질문있습니다. [10] llllllllllll1972 16/05/04 1972
82435 [질문] 수컷 느낌 물씬 나는 향수 추천 부탁드려요 [12] 이혜리3478 16/05/04 3478
82434 [질문] [스타2] PC발열이 심한건지 알수 있을까요? [4] 삭제됨2216 16/05/04 2216
82433 [질문] 균상식육종이 뭔가요? [1] 삭제됨2234 16/05/04 2234
82431 [질문] 안드로이드 서비스 관련 질문입니다. [4] F.Nietzsche1527 16/05/04 1527
82430 [질문] [오버워치] 혹시 남는 베타키 있으신 분 계신가요. [3] 하.양.글1710 16/05/04 1710
82429 [질문] 서울에 궁 나들이 가려고 하는데 지금 시기에 어디가 괜찮을까요?? [2] 원스2032 16/05/04 2032
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로