Sto creando un plug-in personalizzato per un'applicazione Android cordova/phonegap e il Java side fire nativo è un'attività che include una richiamata richiamata da un servizio che avvia. L'idea è che la richiamata venga colpita ogni secondo circa dal servizio e funzioni alla grande, ma il problema è che non riesco a farlo funzionare in un altro thread, quindi il thread cordova principale è bloccato e l'app non risponde affatto.Cordova plugin blocking thread
Sulla base della documentazione che sto facendo questo:
@Override
public boolean execute(String action, JSONArray args, final CallbackContext context) throws JSONException
{
/* snip */
cordova.getThreadPool().execute(new Runnable()
{
public void run()
{
Intent myIntent = new Intent(this.cordova.getActivity(), myMonitoring.class);
this.cordova.getActivity().startActivity(myIntent);
callbackContext.success();
}
});
return true;
}
mi rendo conto qui la richiamata JS non sarà mai chiamato (cioè callbackContext.success();
) perché l'attività sta bloccando, ma non dovrebbe l'attuale mastio filo PhoneGap correndo dopo return true
? Se rimuovo la chiamata startActivity
, l'app continua a funzionare come previsto.
Aggiornamento da Cordova 3.1.0 a 3.3.0 problemi di threading principali risolti. Sto saltando 3.4.0, e aspetto 3.5.0, poiché credo che un bug correlato (anche threading/eventi) sia stato scoperto lì (3.4.0) e risolto per la prossima versione. – Oren