【发布时间】:2020-01-19 08:48:04
【问题描述】:
我已经解决这个问题好几天了,但仍然无法找出问题所在。
HTTPClient 没有被正确清理,因此当循环下载 100 张图片时,应用程序内存正在爆炸。
我正在使用 appc new -t 钛创建的简单合金模板中进行测试。
只用一键打开一个索引视图来开始下载循环
我的索引文件如下所示:
var max = 100
var i = 0
var c = Ti.Network.createHTTPClient();
c.onerror = function () {
c = null;
}
c.onload = function () {
saveFile(this.responseData)
console.log("done get")
i++
getfiles()
}
function getfiles () {
if (i < max) {
try {
c.open('GET', "https://cdn.fossilswitzerland.ch/large0/FS4931.jpg");
c.send();
} catch (e) {
}
} else {
c = null
console.log("finished")
}
}
function saveFile (response) {
console.log("STORING")
var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'FS4931.jpg');
f.write(response);
if (f.exists() === false) {
console.log("NOT STORED")
} else {
console.log("STORED")
}
f = null;
}
$.index.open();
应用程序启动后的最初内存位于 ca. 30mb 到目前为止,一切都很好 单击索引页面上的获取图像按钮后,内存上升到 ca。 62mb 然后过了一会儿下降到ca。 50mb,剩下 20mb 下落不明
我正在使用: Xcode 10.3 Ti SDK 版本 8.1.1.GA 模拟器:iPad Pro(第二代)12.4
将 max 更改为 1000 时,内存飙升至 322mb 左右,并且似乎不再减少。
在循环下载 2000 张图片时,这是一个非常大的问题,因为应用程序有时会崩溃
感谢您的帮助
【问题讨论】:
标签: memory-leaks titanium titanium-mobile titanium-alloy appcelerator-alloy