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

Service에서 Runnable이 돌다 안돌다 합니다.

0 추천
Service에서 Runnable이 1초에 한번씩 돌고 있습니다.

 

화면이 켜져있거나 케이블이 연결돼있을땐 상관없는데

 

케이블이 분리된 상태에서 화면이 꺼져있을 때

 

콜백이 돌다 안돌다 합니다 ㅠㅠ

 

테스트를 위해 초당 호출되는 Runnable에서 진동을 주고 있는데

 

진동이 울리다가 안울리다 울리다 안울리다 불규칙적으로 반복합니다...

 

어떤게 문제가 되어 이런 현상이 나타나나요 ?
음무 (17,820 포인트) 님이 2015년 2월 25일 질문

1개의 답변

0 추천
 
채택된 답변
화면이 꺼지면 시스템이 유휴상태로 돌입하기때문에

스레드가 제데로 돌고 있다고 판단하면 안될것으로 보여지네요..

스레드 대신에 핸들러나 주기적인 알람으로 대처해서 구현해보셔요

아마도 원하는 결과가 나올지도 몰겠네요
nicehee (73,100 포인트) 님이 2015년 2월 25일 답변
음무님이 2015년 3월 4일 채택됨
현재 핸들러를 이용하여 Runnable를 호출하는데 안되네요 ㅠㅠ
스래드도 마찬가지구요 알람으로 한번 시도해보겠습니다..
알람으로 시도 도중 문제가 생겼습니다.. 서비스는 라이브러리에서 구현되어있는상태라 리시버를 메인 프로젝트에도 선언해보고 라이브러리에도 선언해봤는데
리시버가 이벤트를 받지를 못하네요 ...

소스 첨부합니다. 혹시 가볍게 보시고 조언 한말씀 해주시면 감사하겠습니다..


알람 등록
alarmMgr = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
             
            Intent wifiIntent = new Intent(this, ScanningReceiver.class);
            alarmIntent = PendingIntent.getBroadcast(this, 1, wifiIntent, PendingIntent.FLAG_UPDATE_CURRENT);
            
            alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, System.currentTimeMillis() + 1000, 1000, alarmIntent);

브로드캐스트리시버를 상속받은 클래스에서는 로그만 찍구요

매니패스트에는
<receiver android:name="com.example.library.WifiCollectAgent.ScanningReceiver" android:process=":remote" />
이렇게 등록했습니다.

위 경로는 라이브러리의 리시버 경로입니다. 현재 메인프로젝트,라이브러리 매니패스트 둘 모두 추가한상태입니다.
...