【问题标题】:Titanium memory leak in master/detail demo application主/详细演示应用程序中的 Titanium 内存泄漏
【发布时间】:2012-04-09 09:48:30
【问题描述】:

我对钛几乎没有经验。基本上我需要与git 或示例钛工作室中提供的演示版本相同的主/详细应用程序

这是我认为有泄漏的部分

masterView.addEventListener('itemSelected', function(e) {
    //create detail view container
    var detailView = new DetailView();
    var detailContainerWindow = Ti.UI.createWindow({
    title:'Product Details',
    navBarHidden:false,
    backgroundColor:'#ffffff'
    });
    detailContainerWindow.add(detailView);
    detailView.fireEvent('itemSelected',e);
    detailContainerWindow.open();
});

逻辑上每次点击表格行时,都应该创建一个详细视图,并在按下后退按钮时销毁。但正如在 android 设备上测试的那样……每次点击这个应用程序所占用的 tableview 内存都会增加。我认为钛每次都会采用新的细节视图,但不会破坏在后端继续运行的旧视图。 请告诉我这是一个错误还是我弄错了什么。

【问题讨论】:

  • 你不能在活动外创建一个窗口并在活动内创建/添加详细视图吗?
  • @Muhammad Zeeshan 是的,我已经尝试过了。因为每次都使用相同的窗口非常棒。但它给了我另一种奇怪的行为。它第一次运行,但从下一次开始显示空白窗口。如果我们将警报放在处理事件中。它触发了警报,但应用程序仍然是空白的。
  • 您是否在返回按钮事件时关闭窗口?
  • 不,我只使用了示例应用程序代码。没有返回按钮事件代码。

标签: memory-leaks titanium master-detail


【解决方案1】:

我已经找到了解决我所有记忆问题的方法:

var memPool = Ti.UI.createWindow();
memPool.open();
memPool.hide();
memPool.add(yourTrashView);    
memPool.close();

这里解释:

http://developer.appcelerator.com/question/116867/this-is-a-solution-to-your-memory-woes

【讨论】:

  • 嘿,迈克,感谢您的回答.. 我以前看过这个链接.. 我需要打开 2 个窗口,它们将在发生事件时相互聚焦.. 在交换上,模拟器显示新资源正在加载,我认为这个内存增加的真正原因。以您的解决方案结束,其中包括应用程序的相当延迟..希望它在新的 mobilesdk 版本中解决..
  • 我在同样的情况下使用这个解决方案(在 detailView 中有一些 webviews),我没有延迟问题。我觉得你应该试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多