포그라운드 서비스에서 소켓 통신을 유지하고 있습니다.
순서는 메인 엑티비티 -> 서비스 -> 엑티비티 이고, 각 역할은 아래와 같습니다.
메인 엑티비티 - 서비스 호출
서비스 - 소켓 연결, 값 수신, 엑티비티로 값 전달
엑티비티 - 수신한 값으로 UI 변경
메인 엑티비티의 onCreate에서 포그라운드 서비스가 실행되고, 서비스 속에 소켓 통신을 하는 스레드를 무한루프로 돌렸습니다. 여기서 소켓을 연결하고, 소켓에서 얻어온 값을 static으로 엑티비티에 전송하고 엑티비티에 들어가면 받은 값을 엑티비티 텍스트 뷰에 보여주고 값이 변경되도 static으로 받아오니까 바로 확인할 수 있고, 엑티비티에서 버튼을 누르면 버튼 누른 값(임의의 변수 값에 true, false값을 저장했습니다. 이 값)을 다시 소켓으로 static 변수에 값을 담아 전송하는 식으로 구성하였습니다.
원하는건 백그라운드에서 소켓 통신이 유지되며, 값이 계속 들어올건데 전달 받은 값을 3개의 엑티비티의 UI를 업데이트 해주고 값이 변경된다면 변경된 값이 바로 보이게 하고 싶어요
static을 사용하지않는 것이 좋다고 하셔서 Looper를 사용해봤는데 원하는게 아닌거 같아요,, static을 사용하하지않고 사용할만한 다른 방법이 있을까요?
시도한 방법은 소켓 스레드 돌리는 무한루프 안에서 받아온 값으로 엑티비티에 있는 핸들러에 sendEmptyMessage를 보내는 방법을 시도했는데 null 포인트 에러가 발생해서 static을 이용했어요,,
Looper는 소켓 통신 스레드에서 값을 보내고 엑티비티에서 값을 전달받게 했는데 이것도 static을 이용하게 되더라구요 ㅠ