[
https://issues.apache.org/jira/browse/CB-9236?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Shazron Abdullah updated CB-9236:
---------------------------------
Component/s: (was: iOS)
> File plugin takes 500+ms on iOS, causing web thread to lock until done
> ----------------------------------------------------------------------
>
> Key: CB-9236
> URL: https://issues.apache.org/jira/browse/CB-9236
> Project: Apache Cordova
> Issue Type: Improvement
> Components: Plugin File
> Affects Versions: 5.0.0
> Environment: iPad mini retina, iPad air 2. Both running iOS 8.3
> Reporter: Aaron
>
> Hello,
> I'm using the file API to store a gif created by the yahoo gifshot plugin.
> When the gifshot callback fires, i see in the xcode logs:
> 2015-06-23 12:07:42.467 AppName[5446:2010157] THREAD WARNING: ['File'] took
> '12.512939' ms. Plugin should use a background thread.
> 2015-06-23 12:07:43.094 AppName[5446:2010157] THREAD WARNING: ['File'] took
> '566.554932' ms. Plugin should use a background thread
> This tends to interrupt interactions in the webview, such as typing into a
> form, tapping buttons, canvas animations, etc. I'm wondering if it's possible
> to get this running a separate thread. Note that a couple apps ive seen this
> in have been for iOS only. I do not have the means to run this on android &
> test, because it is using a custom plugin only built for iOS. So i cannot
> make a test case there.
> Here's the respected javascript code:
> {code:javascript}
> window.requestFileSystem(window.LocalFileSystem.PERSISTENT, 0, function
> (fileSys) {
> var myFolderApp = 'AppFolder';
> fileSys.root.getDirectory(myFolderApp, { create: true, exclusive: false
> }, function (directory) {
> fileSys.root.getFile(directory.fullPath + "/" + Date.now() + ".gif",
> { create: true, exclusive: false }, function (entry) {
> entry.createWriter(function (writer) {
> writer.onwriteend = function () {
> _this.processingAGif = false;
> if (InteractionStore.getByUUID(interactionUUID)) {
> MediaStore.saveForUUID(interactionUUID, entry.fullPath);
> if (InteractionStore.getByUUID(interactionUUID).complete) {
> InteractionStore.commitInteraction(interactionUUID);
> }
> else {
> InteractionStore.setUUIDToProcessed(interactionUUID);
> }
> }
> };
> writer.write(_this.dataURItoBlob(_this.imagebase64));
> });
> });
> });
> });
> {code}
> The InteractionStore and MediaStore are just memory stores for small bits of
> data. Inconsequential at this point. The commitInteraction writes the paths
> to the websql store.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]