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

리시버랑 서비스때문에 골치아프네요.

0 추천
현재 3g->wifi로 바뀌거나 wifi->3g로 바뀔경우

브로드캐스트 액션을 캐치하여

특정 서버로 파일을 전송하는 기능을 구현하였습니다.

파일전송하는 부분은 백그라운드에서도 가능하게,

서비스에서 쓰레드(파일전송부분)를 동작하게 구성하였습니다.

예)

onRecieve(Context context, Intent intent){

 

startService(....); 이런식으로.

....

}

 

서비스클래스{

   파일전송 쓰레드 동작;

}

위와 같이 구성이 되어 있는데 문제가 있습니다.

인터넷 상태가 바뀔때 onRecive가 3번 호출 되더라구요.

그래서 서비스도 3번 동작을 해버려서요;;

아 이거 어찌해야될까요?

 

요점은

1. 브로드캐스트 리시버가 세번 호출된다.

2. 브로드캐스트의 중복 호출로 서비스 또한 중복 호출되게 된다.

3. 이 방법을 막을 좋은 수가 생각나지 않는다...
갸아악 (21,260 포인트) 님이 2013년 7월 18일 질문

1개의 답변

0 추천
lock 메커니즘을 사용하시거나,

status flag와 process flag를 두어 처리 중 임을 확인 후 실행토록 하는 것은 어떨까요?
익명사용자 님이 2013년 7월 18일 답변
...