2013-11-14 12 views
7

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.

risposta

6

Sto indagando su un problema (un altro). Ma sembra che il filo principale dell'interfaccia utente non sia uguale al filo Cordova. E quello che succede è che il thread principale dell'interfaccia utente è effettivamente rilasciato, ma il thread Cordova non lo è.

BTW, penso anche che ci sia una differenza tra:

callbackContext.success(); 

e

callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result)); 

Non è ancora cotta, mi dispiace. Se troverò qualcos'altro, aggiornerò.

Inoltre, è possibile chiamare prima il numero callbackContext.success();, quindi il resto .. (se aiuta in qualcosa).

+0

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

Problemi correlati