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

백그라운드 Service에서 반복작업을 수행해야하는 경우

0 추천
어플에서 Service가 돌고 있습니다.

이 Service 안에서 1초마다 100ms동안 진동을 울려주려고 합니다.

 

그래서 Runnable 메소드를 하나 만들었습니다.

그 안에서 진동을 주고 1초뒤에 자기자신을 다시 호출합니다.

 

Handler mHandler = new Handler();

Runnable doVibe = new Runnable() {

    publuc void run() {

        //진동 소스코드

        mHandler.postDelayed(this, 1000);

    }

}

 

그런데, 케이블을 분리하고 스크린이 꺼져있으면 진동이 불규칙적으로 발생합니다. 초당한번이 아니라..

 

위와같이 초당 반복적인 작업을 서비스에서 해야한다면, 어떻게 해야하나요 ?
음무 (17,820 포인트) 님이 2015년 2월 25일 질문

1개의 답변

0 추천
 
채택된 답변
서비스를 이용해서 1초씩 동작하는 타이머를 만들었던 적이 있습니다.

단순히 서비스만 구현해서는 화면이 켜지고 앱 실행 상태에서는 어느 정도 잘 작동하지만

다른 앱이 실행된다거나 화면이 꺼졌을 경우에는 OS에서 서비스를 막 죽였다 살렸다 하더라구요.

그래서 죽으면 안되는 서비스에 대해서는 startForeground()를 해주면 되었지만

안드로이드 버전이 올라가면서 사용자가 현재 서비스가 실행 중이라는 것을 알 수 있도록

Notification 영역에 아이콘 표시를 해주었습니다.

startForeground(id, notification); 형식으로요.

화면 꺼진 상태에서 많이 테스트 해보진 않았지만, 도움이 되었으면 합니다~^^

혹시 그래도 화면 꺼진 상태에서 서비스가 죽는다면...

PARTIAL_WAKE_LOCK 옵션을 주어 CPU를 깨어 있도록 하는 게 가능할지...

http://aroundck.tistory.com/48

한 번 참고해 보시기 바랍니다.^^
가랑비 (10,530 포인트) 님이 2015년 2월 25일 답변
음무님이 2015년 3월 4일 채택됨
...