【问题标题】:Performance issue when back button is clicked codenameone单击后退按钮时的性能问题
【发布时间】:2016-02-02 14:07:25
【问题描述】:

我的应用程序几乎准备就绪,但存在一些性能问题。

1)当我点击后退按钮时(可以说是转到主窗体)需要 4-5 秒才能转到上一个窗体,如果我在那段时间单击返回 btn 2-3 次,主窗体将出现 2 -3次。这是为什么?只有一个主窗体,所以无论我点击多少次btn,它都应该只出现一次。

2) 是否有可能杀死正在发生的一切,一旦单击后退 btn 以在实例中执行后退操作。我想尽快执行返回操作

以下是我的后退代码:

Toolbar t = new Toolbar();
        t.setUIID("Title1");
        f.setToolBar(t);
        Command news = new Command(" ") {

            @Override
            public void actionPerformed(ActionEvent evt) {
                showForm("Home", this);
            }
        };
        news.putClientProperty("uiid", "BackCommand");
        f.setBackCommand(news);
        t.addCommandToLeftBar(news);

【问题讨论】:

  • 这个包含后退按钮的表单是如何从您的后退表单中调用的?
  • 不是返回表单,我有一个名为 news 的表单。如上所述,我保留了 btn。如果我单击该返回按钮 2-3 次,它会多次滑回主窗体。
  • 我的问题是你是怎么得到上面的表格的?从哪一种形式?你使用的是 showForm()、form.showBack() 还是 form.show()?
  • 我做了 showForm() 并且在其他形式中我也是从 gui 命令中做的。来自名为“Home”的主窗体。我在 btn actionlistener 中保存 showform() 的地方没有按钮。
  • 关于返回时杀死任务,您可以随时自己执行,因为这些是您要杀死的任务。您需要跟踪您正在做的事情并释放不再需要的资源。

标签: codenameone


【解决方案1】:

当您调用showForm() 方法时,您正在创建引用的GUI 表单的新实例,这将启动它的beforeShow() 方法。

如果您在beforeShow() 中执行长时间操作,这会减慢响应时间。反复按后退按钮将多次调用同一个表单。

将所有长操作(例如从 Web 服务获取数据)移至表单的 postShow() 方法。

【讨论】:

  • 你好 @diamond ,form.show() 和 form.showBack() 是否也与 showForm() 一样工作?
  • 几乎一样,我建议你开始手工编写表单,它可以让你使用f.show();f.showBack();... 这对于流畅的导航非常有用。
猜你喜欢
  • 2016-07-10
  • 1970-01-01
  • 2012-05-07
  • 2017-11-05
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多