2012-10-09 2 views
0

나는 폰갭의 plugin.My 코드 개요를 작성하고이자바에서 함수가 반환되기 전에 특정 콜백 메소드가 호출되기를 기다리는 방법은 무엇입니까?

public PluginResult execute(String action, JSONArray arg1, String arg2) { 
     try{ 
     if (action.equals("authenticate")) { 
      this.startlogin(); 
      return new PluginResult(PluginResult.Status.OK); 
     } 
     else { 
      return new PluginResult(PluginResult.Status.INVALID_ACTION); 
     } 
     }catch(Exception e){} 
      return new PluginResult(PluginResult.Status.JSON_EXCEPTION); 

    } 

startlogin() 메소드는 이후에 호출되는 등록한 콜백 메소드가있는 함수를 호출입니다 특정 event.ie의 startlogin() 메소드가 반환하지만 어떤 방법 비동기 이벤트 발생 후 호출됩니다.

public void startlogin(){ 

    login();//this has callback method 
} 

execute 메소드에서 복귀하기 전에 콜백 메소드가 완료 될 때까지 기다리는 방법은 무엇입니까? Java에서 가장 좋은 방법은 무엇입니까?

추 신 : 실행 메소드에서 phonegap 플러그인이 작동하므로 프로토 타입 실행 방법을 변경할 수 없습니다.

+0

몇 해를 보냈지 만 해결 방법이 있습니까? 제 3 자 인터페이스를 구현하고 콜백을 기다릴 필요가있는 비슷한 문제가 있습니다. – Amber

+0

누구에게도 해결책이 있습니까? –

답변

0

가장 쉬운 방법은 :

if (this.startlogin()) ... 

... 

public boolean startlogin(){ 

    return login(); 
} 
+0

'login()'이 비동기이면'while (! this.startlogin()) {/ * nothing * /}'이 될 수도 있습니다. –

+0

login() 메소드는 비동기 콜백 메소드를 가지고 있습니다. login()은 리턴 합니다만, 콜백 메소드가 실행될 때까지 execute로부터 리턴하고 싶습니다. – Dhatri

+0

죄송합니다, 나는'콜백 메소드가 실행될 때까지 리턴하고 싶습니다. 실행 중 ' –

0

당신이

당신은 정말로 콜백 방법은 PluginResult를 반환해야입니다해야합니까 ... 비동기와 동기를 혼합하려는 나에게 보인다.

건배,

+0

그럴 수 없어 .execute 메서드는 pluginresult.its phonegap 플러그인 항목을 종료하고 method.its 인터페이스를 종료해야합니다. 자바 스크립트와 백엔드 java .. – Dhatri

+0

이것이 정말로 유일한 옵션이라면 @TheStijn에 의해 설명 된대로 execute 메소드에서 poll/busywait을하고 콜백에서'execute()'메소드로 신호를 보내야한다. 콜백에 대한 세부 정보를 제공하면 더 유용한 도움을 줄 수 있다고 생각합니다. 즉, 어떻게 등록 되었습니까? 구현 방법을 제어 할 수 있습니까? –

관련 문제