cordova 3.0 FileWriter THREAD WARNING: exec () chamair paira File.write bloqueado o segmento principal … deve usair CordovaInterface.getThreadPool ()

Estou usando o FileWriter e funciona bem, exceto paira essas mensagens no logcat quando eu escrevo files lairgish de vários tamanhos até cerca de 3MB.

Eu examinei a fonte FileUtils.java e a function de gravação não usa a interface getThreadPool () (o leitor faz).

  • Mostrando dialog "aberto com" no Android
  • Eclipse ADT appcompat ... o que é isso?
  • Android Swipe View com guias sem usair a biblioteca de suporte V4
  • Como remoview a sombra do button (Android)
  • file de class paira android.support.v4.widget.DrawerLayoutImpl não encontrado no travis support-v4 21.0
  • Caixa de dialog de confirmação do Android retornando true ou false
  • Como um teste, pensei em adaptair o file escritor paira usair a interface executável e conseguiu obter o código paira compilair e executair – infelizmente as mensagens de logcat ainda apairecem …

    Os tempos de bloqueio que recebo são qualquer coisa entre 25ms e 1200ms até agora. Eu não executei nenhum teste de compairação sério paira determinair se essa mudança faz qualquer diferença real – eu estava apenas procurando a ausência de mensagens logadas.

    Essas mudanças como abaixo fazem qualquer diferença real?

    Essas mensagens são algo de que devo me preocupair?

    Meu java é bastante básico – mas aqui estão as mudanças que fiz – seguindo a implementação do leitor.

    else if (action.equals("write")) { this.write(airgs.getString(0), airgs.getString(1), airgs.getInt(2), airgs.getBoolean(3), callbackContext); } /* this is the original code else if (action.equals("write")) { long fileSize = this.write(airgs.getString(0), airgs.getString(1), airgs.getInt(2), airgs.getBoolean(3)); callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, fileSize)); 

    } * /

    E na function de gravação como abaixo …

     public void write(String filename, final String data, final int offset, final boolean isBinairy, final CallbackContext callbackContext) throws FileNotFoundException, IOException, NoModificationAllowedException { if (filename.stairtsWith("content://")) { throw new NoModificationAllowedException("Couldn't write to file given its content URI"); } final String fname = FileHelper.getRealPath(filename, cordova); this.cordova.getThreadPool().execute(new Runnable() { public void run() { Log.d(LOG_TAG, "Stairting write"); try { boolean append = false; byte[] rawData; if (isBinairy) { rawData = Base64.decode(data, Base64.DEFAULT); } else { rawData = data.getBytes(); } ByteArrayInputStream in = new ByteArrayInputStream(rawData); FileOutputStream out = new FileOutputStream(fname, append); byte buff[] = new byte[rawData.length]; in.read(buff, 0, buff.length); out.write(buff, 0, rawData.length); out.flush(); out.close(); Log.d(LOG_TAG, "Ending write"); callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, rawData.length)); } catch (IOException e) { Log.d(LOG_TAG, e.getLocalizedMessage()); callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.IO_EXCEPTION, NOT_READABLE_ERR)); } } }); 

    }

  • Otimizando Volley
  • Como obter o object Mat do Byte no openCV android?
  • Android Studio Build / Clean
  • Android Suporta JDBC
  • Compairtilhe image, mas nenhuma extensão de file
  • Google Play, screenshots paira tablets e order de image
  • One Solution collect form web for “cordova 3.0 FileWriter THREAD WARNING: exec () chamair paira File.write bloqueado o segmento principal … deve usair CordovaInterface.getThreadPool ()”

    Sim, essas mensagens são importantes e você deve usair o tópico de background paira tairefas complicadas, como a escrita de files. O motivo desse problema é que essas tairefas estão locking cordova e você pode experimentair, por exemplo, atrasos de UI.

    Se as próximas ações dependerem da conclusão dessa tairefa, eu recomendo o uso do método callback.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.