【发布时间】:2014-03-11 14:46:36
【问题描述】:
我们正在开发一个基于 Sencha Touch 的应用程序,该应用程序在其中一个视图中使用了 Google 地图;然而,我们被困在似乎是内存泄漏(~15M)的问题上,这显然是由于将包含地图的视图推到导航堆栈上造成的。我不明白为什么,但是当视图弹出时,似乎地图资源没有被释放,或者没有被及时释放(重复推送地图很容易崩溃应用程序看法)。我能够使用非常小的 phonegap + sencha + ios 设置重现此问题。我所做的只是:
-
创建一个包含谷歌地图的子视图:
Ext.define('Memleak.view.Subview', { extend: 'Ext.Panel', xtype: 'subview', requires: [ 'Ext.TitleBar', 'Ext.Map', ], config: { title: 'Map', iconCls: 'action', items: [ { xtype: 'map', id: 'theMap' } ] } }); -
向主视图添加一个按钮,将子视图推送到导航视图堆栈上。我在 Ext.application#launch 中这样做以保持最小化:
launch: function() { // Destroy the #appLoadingIndicator element Ext.fly('appLoadingIndicator').destroy(); var view = Ext.create('Ext.NavigationView', { fullscreen: true, items: [{ items: [{ xtype: 'button', text: 'MAP', handler: function () { view.push({ xtype: 'subview' }); } }] }] }); }, -
将地图样式添加到 app.css:
#theMap { height: 500px; width: 500px; }
要观察内存泄漏,请将 sencha 项目部署到 ios 并在模拟器中运行,然后单击调试选项卡以观察内存使用情况,然后只需按住 MAP 和返回按钮即可。我的 iPhone 4S 上的应用程序崩溃大约需要 15 秒。
我真的希望这是我们做错的愚蠢/愚蠢的事情,可以很容易地纠正。非常感谢任何帮助!
【问题讨论】:
标签: ios google-maps sencha-touch