我正在开发一个需要在Android和IOS上工作的Titanium应用程序,但我遇到了一些内存问题。
在我的app.js文件中,我有这个:
var win = Ti.UI.createWindow({
backgroundColor : 'white',
url : 'Home.js'
});
win.open();
Ti.App.View = [];
Ti.App.View数组是保存对项目中所有容器视图的引用,因此我可以关闭它们或检查它们是否已经可见。
然后在我的Home.js文件中,我有一些按钮来打开一些视图。例如:
var view = Ti.UI.createView({
height : deviceHeight,
width : deviceWidth,
backgroundColor : 'white'
});
Ti.UI.currentWindow.add(view);
var viewMenu = Ti.UI.createView({
layout : 'vertical',
width : deviceWidth * 0.20,
backgroundColor : 'transparent',
});
view.add(viewMenu);
viewMenu.addEventListener('click', function() {
var Favorites = require("Eventos");
Events.AddLayout();
});
这是我将新布局添加到同一窗口的方式。
然后在我的Events.js文件中,我有一个像这样的函数和一个全局事件:
exports.AddLayout = function(e) {
//adding all my layout.....
}
Ti.App.addEventListener('Update', function() {
// due something in hear
});
我的问题是,当我按下后退按钮时,如何从内存中删除在AddLayout函数中创建的所有Ti.UI对象?如何删除Events.js文件创建的全局事件?
我试图将te容器视图引用为null,但它还没有解决我的问题。
答案 0 :(得分:0)
您是否考虑过使用Alloy开发此产品?它使用commonJS方法,无需使用像这样的全局事件,并以更容易表示视图,打开和销毁视图等方式构建应用程序。
如果没有,请尽量避免使用全局事件监听器 - 通常不需要使用这些监听器,它们最终会导致各种内存泄漏。
这是关于这个主题的精彩视频:
希望这有帮助!