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

가장 효율적인 event callback 코드 blocking 방법

0 추천
public String test(){

   String result = "":

  

   API.request(

       new onSuccess(String response){

           result = response;

       },

       new onFail(String error_msg){

           result = error_msg

       }

  };

  //위 API 요청에 대한 응답이 오기전까지 block 하고 싶습니다.

  //가장 효율적인 방법이 있을까요?

  return result;

}
Printf (1,380 포인트) 님이 2019년 4월 15일 질문

2개의 답변

0 추천
blocking 이 필요하면 asynctask 내에서 sync 하게 호출하세요

코드상으로는 API 내 request 를 호출하면 request 내에서 thread (또는 asynctask) 를 호출해서 결과를 전달하는것으로 보입니다.

설명하자면 as-is 는

api { request { thread { process(); success() or fail(); } } } 이며

to-be 구조는

thread { api { request { process() success or fail(); } }  }

로 작성하시면 됩니다.

 

개인적으로 to-be 형태로 코딩한 뒤 as-is 관련 method 를 하나 빼서 필요한 형태에 따라 코딩하는 하는게 주로 편하더군요

또다른 방법은 callback 에서 처리하는 이후 작업을 처리하는 방법이 있겠지만 질문 내용은 그내용이 아니니 생략 합니다.
aucd29 (218,390 포인트) 님이 2019년 4월 15일 답변
0 추천

Handler로 이벤트 보내고 동작이 올 때까지, lock 잡아두었다가 Handler에서 이벤트 끝난 후,

lock을 푸는 방식을 적용해 보시는것도 방법입니다.

저의 경우  소니에서 공개한  소스에 있는  HandlerHelper라는 클래스를 Player.java 에서 사용하는 예제를 참조하여 사용하고 있습니다.

익명사용자 님이 2019년 4월 16일 답변
...