[英]setTimeout memory leak in Titanium Appcelerator
我已经做了一点点研究,并已发现,使用的setTimeout()会导致不良内存泄漏,就因为看到这个帖子 。 我希望找到一种补救方法或替代方法。
当我触摸许多按钮中的任何一个时,屏幕上都会出现一个小视图。 同时,我设置了一个超时以在3秒后淡出小视图。 首次按下该按钮时,我还清除了超时,以便不再继续设置多个按钮。 尽管现在在分析代码时,我看到我正在设置时间间隔并清除超时。 不知道这是否是我的问题。 看起来像这样:
var Modal = Titanium.UI.createView({
width:151,
height:83,
owner: null,
myView: null,
});
var modalTimer;
var addModal = function(){
clearInterval(modalTimer);
theView.add(Modal);
modalTimer = setTimeout( function() {
removeModal();
changeTurn();
},3000);
}
playerButton.addEventListener('click',function(){
addModal();
});
谢谢!!!
我可能已通过以下方法解决了此问题:
var Modal = Titanium.UI.createView({
width:151,
height:83,
owner: null,
myView: null,
});
var modalTimer;
var addModal = function(){
clearTimeout(modalTimer);
theView.add(Modal);
modalTimer = setTimeout(removeModal(),3000);
}
playerButton.addEventListener('click',function(){
addModal();
});
我将changeTurn()函数放入removeModal()函数中,并从setTimeout中删除了匿名函数。 我还纠正了clearTimeout的困惑。 我仍然必须看到它在扩展游戏性方面的表现如何,但是从第一印象开始,这已经解决了我的问题。 希望这对遇到类似问题的人有所帮助。
我不知道这是否有帮助,但是我注意到,如果我使用以下应用程序会崩溃:
modalTimer = setTimeout(removeModal(),3000);
但是如果我用不
modalTimer = setTimeout(removeModal, 3000);
其中removeModal定义为
var removeModal = function()
{...};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.