var SetInactivityTimeOut = function () {
try {
var TimeoutInterval = parseInt(10, 10);
var PreviousTimeStamp = Math.round(new Date().getHours() * 60 + new Date().getMinutes());
if (TimeoutInterval === 0) return;
TimeoutInterval = TimeoutInterval * 60 * 1000; //Converting to milisecond
var TimeOutObj;
if (TimeOutObj != null && TimeOutObj != undefined) {
clearTimeout(TimeOutObj);
}
//Ti.API.info('TimeOutObj---'+TimeOutObj);
TimeOutObj = setTimeout(function () {
open the main page
},TimeoutInterval);
} catch (e) {
error(e);
}
}
这是我在每次点击按钮时使用的功能,一旦完成10分钟的空闲时间,它就会打开索引页面。但是当我尝试从那里登录应用程序时,它的速度非常慢,应用程序被挂起。
我在Mobile中使用此代码。我只是想知道函数编写方式是否有任何内存泄漏。
答案 0 :(得分:3)
当你拥有你的功能时,TimeOutObj
被声明在你检查它是否存在的同一个函数中,它将始终存在,但在undefined
处始终为SetInteractivityTimeout
你正在检查它是否是超时ID,所以你永远不会清除超时。
通过将大部分TimeOutObj
函数包装在闭包中,可以在实际处理函数范围之外声明SetInactivityTimeout
,因此每次调用{时它都会保持其值{1}}功能。
var SetInactivityTimeOut = (function () {
var TimeOutObj;
var TimeoutInterval = 10 * 60 * 1000; //Converting to milisecond
return function() {
if (TimeOutObj) {
clearTimeout(TimeOutObj);
}
TimeOutObj = setTimeout(function () {
// open the main page
}, TimeoutInterval);
}
}());