2015-05-12 4 views
1

У меня есть плагин cordova, и он работает. Однако цикл while должен ждать, пока hashmap что-то кажется неэффективным. Есть ли способ лучше?Java, как обнаружить переменное изменение

public class MyApp extends CordovaPlugin { 
    static HashMap<String,String> myProp = new HashMap<String,String>(); 

    protected void pluginInitialize() { 
    } 

    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) 
     throws JSONException { 
    if (action.equals("init")) { 
     AppConnectionService.requestConfig(cordova.getActivity()); 

     init(callbackContext); 

     PluginResult.Status status = PluginResult.Status.NO_RESULT; 
     PluginResult pluginResult = new PluginResult(status); 
     pluginResult.setKeepCallback(true); 
     callbackContext.sendPluginResult(pluginResult);  

     return true;  
    } 
    return false; 
    } 

    private void init(final CallbackContext callbackContext) { 
    while(myProp.isEmpty()) { 
    } 

    PluginResult result = new PluginResult(PluginResult.Status.OK, myProp.get("myID")); 
    result.setKeepCallback(false); 
    callbackContext.sendPluginResult(result);   
    } 

    public static boolean handleConfig (Bundle config) { 
     if (config != null) { 
     // Add all the entries that came in the config for the display adapter 
     for (String key: config.keySet()) {    
      myProp.put(key, config.getString(key)); 
     } 
     } else { 
      Log.d("MyApp", "Failed"); 
     } 
     return false; 
    } 
} 

Так со стороны JavaScript он будет вызывать init() и вернуть «MyId», но так, как я жду результата занятая петля:

while(myProp.isEmpty()) { 
} 

Есть более эффективный и надежный способ подождать результата?

ответ

1

Это выглядит как место для использования wait и notify.

https://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html

http://www.java-samples.com/showtutorial.php?tutorialid=306

+0

Не могли бы вы дать пример в моем коде? основанный на моем коде? Спасибо – Harts

+0

В этих ссылках есть примеры. Попытайтесь адаптировать их в своем коде и опубликовать, если у вас есть проблемы. – nasch

Смежные вопросы