我写了一个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
答案 0 :(得分:-1)
据我所知,Web Workers永远不会在本地目录上工作
文件://
它适用于服务器端。例如,而不是将文件放在&#34; file://&#34;所以路径应该是
***> http://locahost/ or***
***> http://server_ip_address***
因此,Phonegap由HTML和Javascript组成,它们位于设备目录中,因此Phonegap不支持Web worker。 ^^是我发现只是一个小的谷歌搜索:)。请先谷歌