下载文件卡住android应用程序:worklight
Posted
技术标签:
【中文标题】下载文件卡住android应用程序:worklight【英文标题】:Downloading files stuck android application: worklight 【发布时间】:2013-10-19 06:45:30 【问题描述】:我在 work-light 上实现了一个应用程序,我需要从服务器下载文件,它在 Iphone5 上运行良好意味着文件可以顺利下载而不会卡住应用程序流程。但是当我在三星 Galaxy s2 上运行应用程序时( V 4.1)并开始使用for循环下载文件,我的应用程序卡住了,直到下载完成。但是,当我只有一个文件要下载但计数高于 3 或 4 个应用程序时,它的工作正常。
if(networkInfo.networkConnectionType=='WIFI')
$(brandClassDis).addClass('ui-disabled'); // Disabling the Brand.
$(".lms_loadernew").css("display", "block");
var syncProgBar = "#syncProgressBar"+result[0].json.BrandID;
var syncProgLabel = "#syncLoadingLabel"+result[0].json.BrandID;
$(syncProgBar).progressbar(
value: 0,
).show();
$(syncProgLabel).text(parseInt(0, 10)+"%").show();
localStorage.setItem("download"+result[0].json.BrandID,0);
localStorage.setItem("downloadSucc"+result[0].json.BrandID,0);
for(var i=0; i<result.length; i++)
var obj = VideoID:result[i].json.VideoID,BrandID:result[i].json.BrandID,CourseID:result[i].json.CourseID,LoadingStatus:"0";
VideosList.add(obj,push:false);
result[i].json.IsDownload = 2;
Videos.replace(result);
**downloadFolder(result[i],result.length)**
函数downloadFolder(result,numVideoBrand)
try
var loaderPer = 0;
var courseId ="#sync_"+result.json.CourseID.replace(/ /g,'');
var courseLabelId ="#loadingLabel"+result.json.CourseID.replace(/ /g,'');
var syncProgBar = "#syncProgressBar"+result.json.BrandID.replace(/ /g,'');
var syncProgLabel = "#syncLoadingLabel"+result.json.BrandID.replace(/ /g,'');
var serverLoc = encodeURI(result.json.DownloadName);
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem)
fileSystem.root.getDirectory("LMS_APP", create: true, exclusive: false, function(directory)
var localPath = directory.fullPath+"/"+"Videos"+"/"+zipFileName;
var ft = new FileTransfer();
ft.download(serverLoc,localPath, function(entry)
entry.file(function(file)
WL.Logger.debug("File size: " + file.size);
if(file.size<=854)
downloadFail("",result,numVideoBrand);
entry.remove(successRemove, failRemove);
else
if(localStorage.getItem("download"+result.json.BrandID) == null || localStorage.getItem("download"+result.json.BrandID) =="" || localStorage.getItem("download"+result.json.BrandID) == undefined)
localStorage.setItem("download"+result.json.BrandID,1);
else
localStorage.setItem("download"+result.json.BrandID,(localStorage.getItem("download"+result.json.BrandID)-(-1)));
localStorage.setItem("downloadSucc"+result.json.BrandID,(localStorage.getItem("downloadSucc"+result.json.BrandID)-(-1)));
WL.Logger.debug("Folder is:---->"+directory.fullPath+"/"+zipFileName);
WL.Logger.debug("download"+localStorage.getItem("download"+result.json.BrandID)+"..."+numVideoBrand+"........"+ localStorage.getItem("downloadSucc"+result.json.BrandID));
var loadedVideoPer = (( localStorage.getItem("download"+result.json.BrandID)/numVideoBrand)* 100);
$(syncProgBar).progressbar(
value: loadedVideoPer,
);
$(syncProgLabel).text(parseInt(loadedVideoPer, 10)+"%");
$(courseId).hide();
$(courseLabelId).hide();
, function(error)downloadFail(error,result,numVideoBrand););
, function(error)
);
$(courseId).progressbar(
value: loaderPer,
).show();
$(courseLabelId).text(parseInt(loaderPer, 10)+"%").show();
ft.onprogress = function(progressEvent)
if (progressEvent.lengthComputable)
loaderPer = ((progressEvent.loaded / progressEvent.total)*100);
$(courseId).progressbar(
value: loaderPer,
);
$(courseLabelId).text(parseInt(loaderPer, 10)+"%");
//courseLabelId.text(parseInt(loaderPer, 10) + "%" );
loadingStatus(result);
;
,function(error)
downloadFail(error,result,numVideoBrand);
);
, function(error)
downloadFail(error,result,numVideoBrand);
);
catch(e)
WL.Logger.debug("exp in downloadFile: "+e);
//alert("exp "+videoLoader);
【问题讨论】:
您是否也尝试过使用其他 android 设备?它是此设备或任何 Android 设备独有的吗?模拟器? 是的,我已经在 s2、s3 和 htc one x 等许多 android 设备上对此进行了测试,但在所有设备中都存在问题。 java脚本支持递归调用吗? 一般来说是的。您说这在 ios 中有效,但在 Android 中失败,所以这不是问题所在……也许 Android 不能很好地处理它。在此之前、期间或之后,LogCat 中是否有任何内容?有任何警告或错误吗? nop 只是它阻止了整个应用程序的 java 脚本。 嗯,这里没有什么好主意。看看这个问题是否对你有帮助:***.com/questions/15505959/… 【参考方案1】:来自 cmets,解决方案是:
下载队列中的文件,因为一次下载所有文件会导致 应用卡住了...
【讨论】:
以上是关于下载文件卡住android应用程序:worklight的主要内容,如果未能解决你的问题,请参考以下文章
问题集录--Android:解决Studio新建项目时,在 Building gradle project info 一直卡住
如何在 Android Studio 中恢复卡住的代码分析?
转载解决refreshing gradle project 和Building gradle project info 一直卡住速度慢