[ 
https://issues.apache.org/jira/browse/CB-7109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14057808#comment-14057808
 ] 

Rajesh Kumar commented on CB-7109:
----------------------------------

No. but this is what I did:

----FileUtils.java----

if (action.equals("write")) {
  final String fname=args.getString(0);
  final String data=args.getString(1);
  final int offset=args.getInt(2);
  final Boolean isBinary=args.getBoolean(3);
  threadhelper( new FileOp( ){
        public void run() throws FileNotFoundException, IOException, 
NoModificationAllowedException {
          long fileSize = write(fname, data, offset, isBinary);
          callbackContext.sendPluginResult(new 
PluginResult(PluginResult.Status.OK, fileSize));
        }
   }, callbackContext);
}

I changed the above code as:

if (action.equals("write")) {
  threadhelper( new FileOp( ){
        public void run() throws FileNotFoundException, IOException, 
NoModificationAllowedException {
          String fname = null;
          String data = null;
          int offset = 0;
          Boolean isBinary = false;
          try {
                fname = args.getString(0);
                data=args.getString(1);
                offset = args.getInt(2);
                isBinary=args.getBoolean(3);
          } catch (JSONException e) {
                e.printStackTrace();
          }
          long fileSize = write(fname, data, offset, isBinary);
          callbackContext.sendPluginResult(new 
PluginResult(PluginResult.Status.OK, fileSize));
        }
   }, callbackContext);
}

> exec() call to plugin blocked the main thread
> ---------------------------------------------
>
>                 Key: CB-7109
>                 URL: https://issues.apache.org/jira/browse/CB-7109
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android, Plugin File
>    Affects Versions: 3.5.0
>            Reporter: Rajesh Kumar
>            Priority: Minor
>
> In the file plugin of v3.5.0, I constantly see a warning in logcat in eclipse 
> when I try to write to a file. The warning is:
> THREAD WARNING: exec() call to File.write blocked the main thread for 117ms. 
> Plugin should use CordovaInterface.getThreadPool().
> Similar issue is when I try to exit app. I guess this issue is present for 
> all the plugins. I checked the part of File plugin code:
> final String fname=args.getString(0);
>             final String data=args.getString(1);
>             final int offset=args.getInt(2);
>             final Boolean isBinary=args.getBoolean(3);
>             threadhelper( new FileOp( ){
>                 public void run() throws FileNotFoundException, IOException, 
> NoModificationAllowedException {
>                     long fileSize = write(fname, data, offset, isBinary);
>                     callbackContext.sendPluginResult(new 
> PluginResult(PluginResult.Status.OK, fileSize));
>                 }
>             }, callbackContext);
> And, threadhelper uses: 
> cordova.getThreadPool().execute(new Runnable() {
>     public void run() {}
> });
> This means, the plugin is using a thread to do some async task, but logcat 
> throws the block warning. We need to fix this.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to