2012-10-09 14 views
0

我寫一個PhoneGap的plugin.My代碼大綱是這樣的如何等待某個函數在java中返回之前調用某個回調方法?

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中最好的方法?

PS:我不能更改執行方法原型,因爲phonegap插件在執行方法上工作。

+0

已經過了幾年......但是您有解決方案嗎?我有一個類似的問題,我正在實現第三方接口,需要等待回調。 – Amber

+0

有沒有人有這個解決方案? –

回答

0

最簡單的方法:

if (this.startlogin()) ... 

... 

public boolean startlogin(){ 

    return login(); 
} 
+0

也可能是:'while(!this.startlogin()){/ * nothing * /}'如果login()是異步的。 –

+0

login()方法有一個異步回調方法。login()返回但我想從執行返回,直到執行回調方法。 – Dhatri

+0

對不起,我不明白'我想從執行返回,直到回調方法被執行' –

0

在我看來,你試圖用異步混合同步...

你應該做的是什麼有回調方法返回PluginResult。

乾杯,

+0

我不能做that.execute方法必須返回pluginresult.its一個phonegap插件進入和退出method.its一個接口javascript和後端java .. – Dhatri

+0

如果這真的是您唯一的選擇,您必須在@TheStijn中概述的execute方法中輪詢/ busywait,並以某種方式從回調信號發送到execute()方法。我想我們可以提供更多有用的幫助,如果您提供有關回調的一些細節,即它是如何註冊的,您是否可以控制其實施等。 –

相關問題