0

我遇到了以下问题,我的老板希望我让我们的应用程序响应更快,而无需在切换视图之间等待时间。它曾经是一个“标准”应用程序,ViewNavigator但只有一个View被破坏并根据用户对他自己创建的选项卡的选择使用不同内容重新创建的应用程序。视图已使用默认值切换SlideViewTransition。如下所述,我现在使用稍微更轻量级的方法将时间缩短到半秒,但是半秒仍然太多了。

该应用程序是一个选项卡式应用程序,用户可以在其中自己创建和编辑新视图,因此可以创建/编辑/删除选项卡及其相应的选项卡。我当前的实现基于用于显示“视图”的aButtonBar和 a 。Group组的内容是根据选定的选项卡创建的。内容基于存储构建“视图”所需的所有信息的 XML 数据。自然地,删除和创建组件需要一点时间(我谈到的半秒),所以我正在寻求另一个解决方案。

我想到的是ViewNavigator在应用程序启动时使用并创建所有存储的视图。

非常像这样:

for each (var _view:XML in _allViewsConfig.children()) {
    var compView:View = new View();
    compView.percentHeight = 100;
    compView.percentWidth = 100;
    compView.name = _view.label;

    for each (var _groupElement:XML in _view.vgroup) {
        var group:VGroup = new VGroup;
        group.percentWidth = 100;
        group.percentHeight = 100;

        for each (var _windowElement:XML in _groupElement.window) {
            var window:WindowContainer = new WindowContainer;
            for each (var _componentElement:XML in _windowElement.component) {                  
                var component:UIComponent = _componentManager.create(_componentElement.@type, _componentElement);
                window.addElement(component);
            }

            group.addElement(window);
        }
        compView.addElement(group); 
    }
    views.addItem(compView);

}

views是一个 ArrayList,用于存储创建的视图。

我现在唯一遇到的问题是我不能View在对应的ViewNavigator.

我按照通常的方式尝试了它,即navigation.pushView(_viewCreator.views.getItemAt(0) as Class); 这个,但是不起作用,没有错误或任何东西,ViewNavigator只是没有做任何事情,所以我想View不能像这样创建一个类。

那么我怎样才能使这项工作呢?另外,你们是否认为这是解决问题的正确方法,尤其是考虑到应用程序的整个动态特性(基于选项卡)?自然地,幻灯片转换将被完全禁用,因为我们的复杂组件非常慢。

任何帮助、评论或想法将不胜感激!

编辑:再想一想,简单地使用Groups而不是应该使它更轻量级,ViewNavigatorView解决视图不被推送的问题。

4

1 回答 1

0

实际上ViewNavigator pushView()是一种创建给定类(方法参数)实例的机制。

出于所有导航历史的目的,ViewNavigator使用NavigationStack对象来存储相关值(您也可以自定义)。

我没有直接的答案给你,但我认为你必须实现自己的自定义ViewNavigator机制(扩展ViewNavigator以利用现有的有用方法并覆盖其他方法)。

于 2012-08-11T08:46:34.547 回答