총 게시물 934건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

효율적으로 return하기??

글쓴이 : 정에약한마음 날짜 : 2017-03-23 (목) 11:25 조회 : 2141
글주소 : http://www.androidside.com/B49_best/12731
 
  No1 기술혁신 NXP반도체
반도체전문업체, 휴대전화, 가전, ID, 범용반도체, 소프트웨어, 반도체제품안내.
www.nxp.com
  오라클자바교육센터 구로본점
안드로이드전문교육, SDK실무개발, APP개발프로젝트, 실습폰지원, 재직자환급
www.oraclejava.co.kr
  서울게임아카데미
추천게임학원, 2018년 한국 소비자만족지수 1위, 고용노동부국비지원, 수강료조회
www.seoulgame.co.kr
신청하기


KakaoTalk_Photo_2017-03-23-11-20-12.png


저 메서드를 호출을 하려고 하는데요
물론 집에서 하다가 막혀서 하드코딩할까 하다 갑자기 오늘 생각나서 질문을 올려봅니다...

onDataChange가 저 리스너가 등록될때 한번 호출이 됩니다.
그러니 메서드 호출될떄 리스너가 등록되는거죠 그래서 json data를 메서드 호출한곳으로 return을 시켜주고 싶은데
이벤트버스 등등 알아봣으나 제가 생각하는 방식과 다른것같았습니다.
흠 우선 저 메서드를 어디서든 호출을 하게 될것같습니다 주로 버튼을 누를떄 호출이 될 것같은데...
그래서 메서드에 액션이 들어오면 progress를 실행시키고
while문으로 무한루프 돌면서 sleep을 1000을 주고 계속 json에 데이터가 있는지 체크를 한뒤
json에 데이터가 있으면 return 시키는 방식으로 해도 나쁘지 않겠다라는 생각을 방금 했는데
어떨까요?? 비효율의 극치겠죠...?

예)
while(true){
if(json != null){
break;
}
Thread.sleep(1000)
}
retrun json;

아무리 생각해도 메서드를 호출하고 json data return받는 좋은방법이 떠오르질 않습니다 ㅠㅠ 
rx을 배우면 쉽다던데 개인플젝이다보니 우선 4월까지 기완성을 목표로 아는지식으로만 한뒤에
이 앱 다 만들고나서 rx를 시작할려다보니 막히는게 이만저만이 아니네요...




정에약한마음 님의 개발 Q&A FAQ 최신글 [더보기]


질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

인절미후후 2017-03-23 (목) 12:30
뭔가 코드 모르겠다는
댓글주소 추천 0 반대 0
     
     
정에약한마음 2017-03-23 (목) 13:03
[@인절미후후]설명이 어렵나요 ㅠㅠ 
댓글주소 추천 0 반대 0
OSKiller 2017-03-23 (목) 12:59
뭐가 하고 싶은건지 잘 모르겟음여...

댓글주소 추천 0 반대 0
     
     
정에약한마음 2017-03-23 (목) 13:02
[@OSKiller] 흠 말그대로 datachange 메서드에 들어온 값을 리턴값으로 주고싶은데
 저게 서버를 통하다 보니 늦게 들어옵니다
json은 null값이 리턴이 되는거죠
그래서 datachange에 들어온 data를 정상적으로 return을 시켜주고싶은거에요 

댓글주소 추천 0 반대 0
OSKiller 2017-03-23 (목) 13:37
비동기로만 가져올수 있는 데이터를 함수 호출 로 가져다 쓴다니요...
미리 받아 놓고 값이 null이 아닐때 가져다쓰고 
아니라면 리스너/옵저버 등을 달아놓고 이벤트를 받아야죠....
댓글주소 추천 0 반대 0
     
     
정에약한마음 2017-03-23 (목) 13:50
[@OSKiller]그래서 적어둔 코드처럼 하면 가능하지 않을까 싶어서 생각해본거에요 ㅠㅠ
언제 쓸지몰라 계속 변경되는 DB를 미리 받아놓을 수 없어서 ㅠㅠ
어차피 통신하는동안 프로그래스 돌리면 문제없지 않을까 라는 생각을 해본겁니다 ㅠㅠ 
댓글주소 추천 0 반대 0
암페타민 2017-03-23 (목) 16:48
서버의 데이터가 변경됨. 이것을 유저에게 알리고 다운받도록 시킴(유저의 선택은 필요치 않음)
이라면
서버데이터 변경시에 fcm을 던져서 데이터 체인지를 부르면....?
댓글주소 추천 0 반대 0
     
     
정에약한마음 2017-03-23 (목) 16:56
[@암페타민]이게 파이어베이스에 있는걸 가져오는거라
리스너로는 존재해요 ㅎㅎ 해당 데이터베이스가 변경되면 호출하는 리스너는 존재해서
그걸 쓰면 말씀하신거랑 똑같은 기능이긴 한데 변경될떄마다 호출되는거라서 좀 불필요할것 같아서요 ㅠㅠ

댓글주소 추천 0 반대 0
뉴키 2017-03-23 (목) 18:16
전체 구조를 몰라서 그러는데용;

AsyncTask면 콜백 구현해서 처리하면 되지 않을까요.
댓글주소 추천 0 반대 0
윈도우 2017-03-29 (수) 18:22
Thread 와 Handler() 함수을 이용하는 방법도 있을것 같은데,
댓글주소 추천 0 반대 0
lesky 2017-04-03 (월) 14:58
우선은 코드가 잘못되었네요 아마도 저런식으로 코딩하셨다면 child에서 DataChange를 호출하기 전까진 값이 호출되지 않습니다 저렇게 코딩하시면 json[0] 에 널로 리턴되겠죠 절차대로 흐르지 않기때문입니다 비동기기때문이죠 child에 무언가 이벤트가 발생하기전까지 무한 Sleep을 시키는 방법은 가능할수 있지만.. 좋은코딩은 아닌거 같습니다 위험성도 큰듯하고 대기시간이 길어지면 안드로이드에서 오류로 판단할수도있구요 하여 전체 코드가 어떤지는 모르지만 해당메서드 호출시 뒤의 코드들은 리스너가 호출된후 로 미뤄서 Handler나 View작업이없다면 메서드를 하나 생성하여 그쪽으로 연동되게 하는게 나을것같네요 
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기