CodeNameOne App的HTC性能问题?

时间:2016-08-17 06:23:39

标签: java android mobile cross-platform codenameone

我使用codenameone创建了一个应用程序,而我正在各种设备上进行测试[在不同类型上都很好,在Apple,Android上试过], 我注意到HTC设备存在问题,浏览屏幕或浏览屏幕时有一些意外的缓慢

你能否就一些可以解决这个问题的构建参数或任何一种找出延迟源的方法提出建议?

1 个答案:

答案 0 :(得分:0)

我正在做的是分割对话框和表单的创建和使用。如果您没有使用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 此代码未经测试。这只是为了澄清目的