You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Samik R (JIRA)" <ji...@apache.org> on 2015/01/02 10:50:13 UTC
[jira] [Commented] (CB-7109) exec() call to plugin blocked the main
thread
[ https://issues.apache.org/jira/browse/CB-7109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14262814#comment-14262814 ]
Samik R commented on CB-7109:
-----------------------------
As suggested by Andrew, I tried overriding the execute method with rawArgs for one of my plugins (CordovaSQLite), but I still get the same warnings. The warnings are for delays running into ~<100ms, so may be I am fine. But I am still curious why the delay is happening.
Here is what my execute method looks like now:
==============================================
public boolean execute (String action, final String rawArgs, CallbackContext callbackContext)
{
//Log.d("CordovaSQLite", "Plugin called for: " + action);
_callbackContext = callbackContext;
if (action.equals("openDatabase"))
{
cordova.getThreadPool().execute(
new Runnable()
{
@Override
public void run()
{
try
{
JSONArray jsonArray = new JSONArray(rawArgs);
String fullDBPath = jsonArray.getString(0);
boolean toCreate = (jsonArray.getInt(1) != 0);
openDatabase(fullDBPath, toCreate);
}
catch (JSONException ex){}
}
}
);
return true;
}
....
.....
==============================================
> 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.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org