cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ian Clelland (JIRA)" <>
Subject [jira] [Commented] (CB-7109) exec() call to plugin blocked the main thread
Date Mon, 05 Jan 2015 18:53:35 GMT


Ian Clelland commented on CB-7109:

It doesn't look like any code has been committed to the file plugin. It still parses JSON
on the main thread, in the master branch.

Agreed that we should keep this issue on-topic, and open others for other (core) plugins if
they are also slowed by JSON args handling.

Non-core plugins are best handled through education and documentation. If overriding the String
version of {{execute}} is better for plugins which handle large JSON payloads, then we should
mention that on the plugin development pages.

> exec() call to plugin blocked the main thread
> ---------------------------------------------
>                 Key: CB-7109
>                 URL:
>             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,
>                 }
>             }, 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

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message