新线程中的Phonegap复制文件

时间:2014-03-18 13:40:26

标签: javascript cordova web-worker

我写了一个phonegap应用程序,在其中我将在android库中选择的文件复制到SD卡。 此功能有效,但冻结主线程的复制时间。

现在我测试了在Web Worker中写这个,我将fileEntry发布到Web Worker但是出现了错误:

03-18 09:31:37.575    1713-1713/de.scisys.app I/chromium﹕ [INFO:CONSOLE(1)] "Uncaught TypeError: Object #<Object> has no method 'copyTo'", source: blob:file%3A///7fd968c1-2d2b-469e-b4b7-fab1172bb496 (1)

这是我的代码:

function(fileEntry) {
    ...
    var blob = new Blob(['onmessage = function(e) { var data = e.data; data.fileEntry.copyTo(data.parentEntry, data.newName, function() { postMessage("success") }, function() { postMessage("error") }); }'], {type: 'text/javascript'});
    var blobURL = window.URL.createObjectURL(blob);

    var worker = new Worker(blobURL);
    worker.onmessage = function(e) {
        alert(e.data)
    };
    worker.postMessage({'fileEntry': fileEntry, 'parentEntry': parentEntry, 'newName': fileId+"."+fileName[fileName.length-1]});
    ...
}

我的代码中是否有错误,或者有一个想法?

感谢您的帮助!

修改 的 我通过编辑Phonegap核心文件插件找到了一个解决方案。在FileUtils&#34;执行&#34;方法我把工作改为Thread。 http://www.mindfiresolutions.com/Implementing-MultiThreading-In-Android-Plugin-For-PhoneGap-260-2572.php

1 个答案:

答案 0 :(得分:-1)

据我所知,Web Workers永远不会在本地目录上工作

文件://

它适用于服务器端。例如,而不是将文件放在&#34; file://&#34;所以路径应该是

***> http://locahost/ or***
***> http://server_ip_address***

因此,Phonegap由HTML和Javascript组成,它们位于设备目录中,因此Phonegap不支持Web worker。 ^^是我发现只是一个小的谷歌搜索:)。请先谷歌