У меня есть плагин 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()) {
}
Есть более эффективный и надежный способ подождать результата?
Не могли бы вы дать пример в моем коде? основанный на моем коде? Спасибо – Harts
В этих ссылках есть примеры. Попытайтесь адаптировать их в своем коде и опубликовать, если у вас есть проблемы. – nasch