【问题标题】:HTC Preformance Issue with CodeNameOne App?CodeName One 应用程序的 HTC 性能问题?
【发布时间】:2016-08-17 19:32:49
【问题描述】:

我使用代号创建了一个应用程序,当我在各种设备上进行测试时[在不同类型上都很好,在 Apple、Android 上试过], 我注意到 HTC 设备上的一个问题,在浏览屏幕或在屏幕之间移动时出现一些意外的缓慢

您能否建议一些可以解决此问题的构建参数,或任何找出延迟源的方法??

【问题讨论】:

  • 你试过在模拟器中使用性能管理器和HTC皮肤吗?
  • 是的,我试过了,没问题,没有任何缓慢
  • 您是否拆分了表单和对话框的创建和使用?
  • 它已经内置在 codenameone 中,我所做的是将表单提供给 showForm 方法,它会处理其余的
  • 哪些特定的 HTC 设备?一些安卓制造商使用“节流器”来降低处理器的速度,以防止它们升温。如果我知道型号,我可以进一步研究它是否是其中一种情况,并检查是否有什么可以做的。

标签: java android mobile cross-platform codenameone


【解决方案1】:

我正在做的是拆分对话框和表单的创建和使用。如果您不使用 GUIBuilder(无论是新的还是旧的),那么您也可以尝试一下。它在性能问题上帮助了我很多,这里有一个例子:

首先,会有一个LoginForm:

class Login extends Form {
   MainForm f; //do not initiate

   public Login () {
     this.setLayout (BoxLayout.y());
     this.add(new Label("username:").add(new TextField("","username"));
     this.add(new Label("pw:").add(new TextField("","password"));
     Button login = new Button ("Login");
     login.addActionListener(e -> {
        f.provideParameters(providedName,providedPw);
        f.show();
     }
     Display.getInstance().scheduleBackgroundTask(new Runnable {
       public void run() {
         //initiation in the background
         f = new MainForm ();
       }
     );
}

然后是主窗体

class MainForm extends Form {

  private Label welcomeLbl;

  public MainForm () {
    //here you dont have the username
    //but running it in the background creates all the components, so...
    welcomeLbl = new Label();
  }

  public void provideParameters (String name, String pw) {
    //...they are ready to use here!
    this.welcomeLbl.setText("Welcome " + name);
  }
}

通过这种方式,我的性能得到了巨大的提升,因为复杂对象的构建被外包给了后台而不是前台。

注意 这只是一个例子。对象越复杂,性能提升就越高。

Note2 此代码未经测试。这只是为了澄清目的

【讨论】:

  • 但是使用它我会失去 GUI 提供的功能,是否有任何类型的参数可以帮助提高性能??
  • 看看这个部分:codenameone.com/manual/performance-debugging.html 可能是未使用的图片
  • 您不应该在 scheduleBackgroundTask() 中创建 MainForm(),因为它不在 EDT 上。请改用 callSerially() 以确保它在 EDT 上运行。
  • 无论如何,这是一个示例代码来澄清一点,仍在尝试为 codenameone 找到一组最佳构建参数以提高性能
猜你喜欢
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多