[英]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.