현재 서비스와 파서를 이용하여 5초마다 한번씩 네이버 실시간 검색어가 갱신되는 스터디앱을 만들어보고 있습니다.
현재 클래스 구조는 메인액티비티, 서비스, 파서클래스(쓰레드), 데이터저장클래스 이렇게 나누어져 있습니다.
먼저 메인액티비티에는 ArrayList를 통하여 자원을 관리하고 있구요.
메인액티비티에서 커스텀 리스트뷰를 구현하여 ArrayList의 자원을 기반으로 화면에 뿌려줍니다.
그런데 문제가 생겼습니다.
5초마다 한번씩 갱신이 되려면 5초마다 한번씩 어댑터뷰의 setNotifyChanged였나? 여튼.. 요걸 호출해줘야하는데.
현재 서비스의 onStartCommand에서 파서 쓰레드클래스를 생성하고 호출하기때문에
메인엑티비티의 접근 방법이 난감합니다.
핸들러를 사용한다면 메인클래스의 이너로 정의되어 있는 핸들러를 서비스의 생성자로 받아야되는꼴인데..
그렇게 받았다고 하더라도 그 핸들러를 다시 파싱 쓰레드 클래스의 파라미터로 또 던져줘야
파싱클래스에서 메인엑티비티에 접근이 가능하죠..
속시원한 방법이 없을가요?
요점은 메인엑티비티 -> 서비스 -> 파싱 쓰레드 클래스 이런 순서로 호출이 이루어지는데
파싱쓰레드 클래스에서 메인엑티비티의 UI단을 조작해야되는 상황이고,
서비스는 객체생성을 통해 동작하는것이 아니라 파라미터로 Handler를 넘기기 애매모호하고,
넘기더라도 또 다시 다음 클래스로 Handler를 넘겨야되는 이상한 상황입니다.
안드로이드 무림고수 선배님들 제발 도와주세요.
간신히 간신히 글로써 정리해서 올립니다.ㅠㅠ
정확히 글 내용이 이해되진 않지만...
아마 브로드 캐스트를 활용하시면 될 것 같습니다.
파싱이 끝나면 사용자 정의 브로드 캐스트를 발생시키시고
발생시키신 브로드캐스트를 캐취하는 리스너를 메인 액티비티에서 만드시면 될 것 같습니다.
제 설명을 보태는 블로그 주소도 링크 해드립니다.
http://blog.naver.com/PostView.nhn?blogId=kippee&logNo=130045027518
제가 질문을 제대로 이해 한 것이 아니라면... 패스;;;;