온갖 실험과 반복 끝에도 도저히 안되서 질문드립니다...
메인 액티비티에서 서비스를 만들고 서비스에서 스레드를 두 개 만들어 데이터를 송, 수신하고 있습니다.
이게 화면이 켜지면 제대로 잘 작동을 합니다.
홈키를 눌러 다른 프로그램을 동작시켜도 제대로 동작합니다.
문제는 화면이 꺼지면 "수신만" 안한다는 것입니다.
두 기기가 일정한 주기로 브로드캐스트로 동기화 신호를 보내고,
두 기기가 각각 자신이 보낸 데이터와 상대방이 보낸 데이터를 받고, 수신 로그를 기록합니다.
이 중 한 기기의 전원버튼을 눌러 슬립상태로 보내버리면,
여전히 켜져있는 기기는 자신이 보낸 데이터와 상대가 보낸 데이터를 계속 받지만,
꺼져 있는 기기는 상대의 데이터를 받지 않고, 자신이 보낸 데이터만 받아서 로그에 쌓습니다.
그러다 다시 키면 둘다 받기 시작하고요.
디버그 모드로 단계별로 확인해도, 자신의 데이터를 수신할때는 socket.recv()를 통과하는데,(즉 스레드는 동작합니다)
상대방이 보낸 데이터는 전혀 반응을 안하고 socket.recv()에서 진행을 안하네요...
wifilock, wakelock 모두 acquire 되어있는 상태입니다.
wifi 설정도 화면이 꺼져도 wifi 끄지 않음 으로 설정되어 있고요.
도저히 원인을 모르겠어요.
짐작하기로는 슬립상태가 되면 전원관리 차원에서 socket.recv() 메소드 내부루프를 꺼버리는거 같은데,
이걸 어떻게 해결해야할지 모르겠네요.
전화어플이나 메신져어플 같은 경우도, 화면이 꺼져도 데이터 수신을 하고, notification 해주잖아요.
고수님들 제가 뭔가 한가지를 모르는 것 같은데 그것좀 알려주세요