Sencha Touch谷歌地图内存泄漏?

时间:2014-03-11 14:46:37

标签: ios google-maps sencha-touch

我们正在开发基于Sencha Touch的应用程序,该应用程序在其中一个视图中使用Google地图;然而,我们仍然坚持看似内存泄漏(~15M),这显然是由于将包含地图的视图推送到导航堆栈引起的。我不明白为什么,但是当弹出视图时,似乎地图资源要么没有被释放,要么没有被及时释放(通过反复推动很容易使应用程序崩溃)地图视图)。我能够使用非常小的phonegap + sencha + ios设置重现这个问题。我所做的就是以下内容:

  1. 创建包含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'
                    }
                ]
            }
    });
    
  2. 在主视图中添加一个按钮,将子视图推送到导航视图堆栈。我在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'
                        });
    
                    }
                }]
            }]
        });
    },
    
  3. 将地图样式添加到app.css:

    #theMap {
        height: 500px;
        width: 500px;
    }
    
  4. 要观察内存泄漏,请将sencha项目部署到ios并在模拟器中运行它,然后单击调试选项卡以观察内存使用情况,然后继续点击MAP和Back按钮。我的iPhone 4S上的应用程序崩溃大约需要15秒。

    我真的希望这是一个愚蠢/愚蠢的事情,我们做错了,这很容易纠正。非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

内存泄漏发生在谷歌地图中,​​仅由创建和销毁谷歌地图引起。谷歌已经意识到这个问题,但还没有修复它。

https://code.google.com/p/gmaps-api-issues/issues/detail?id=3803#makechanges