我们正在开发基于Sencha Touch的应用程序,该应用程序在其中一个视图中使用Google地图;然而,我们仍然坚持看似内存泄漏(~15M),这显然是由于将包含地图的视图推送到导航堆栈引起的。我不明白为什么,但是当弹出视图时,似乎地图资源要么没有被释放,要么没有被及时释放(通过反复推动很容易使应用程序崩溃)地图视图)。我能够使用非常小的phonegap + sencha + ios设置重现这个问题。我所做的就是以下内容:
创建包含Google地图的子视图:
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和Back按钮。我的iPhone 4S上的应用程序崩溃大约需要15秒。
我真的希望这是一个愚蠢/愚蠢的事情,我们做错了,这很容易纠正。非常感谢任何帮助!!
答案 0 :(得分:0)
内存泄漏发生在谷歌地图中,仅由创建和销毁谷歌地图引起。谷歌已经意识到这个问题,但还没有修复它。
https://code.google.com/p/gmaps-api-issues/issues/detail?id=3803#makechanges