Titanium app

时间:2016-07-13 22:00:23

标签: android ios memory-management titanium appcelerator

我正在开发一个需要在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,但它还没有解决我的问题。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用Alloy开发此产品?它使用commonJS方法,无需使用像这样的全局事件,并以更容易表示视图,打开和销毁视图等方式构建应用程序。

如果没有,请尽量避免使用全局事件监听器 - 通常不需要使用这些监听器,它们最终会导致各种内存泄漏。

这是关于这个主题的精彩视频:

Your Apps Are Leaking

希望这有帮助!