java - 如何在将一个页面导航到另一页面时发布 CODENAMEONE 表单(包括其所有组件)?

标签 java ios codenameone

我尝试释放表单内存,只是为了在从一个表单导航到另一个表单时使该表单为空。

但是null并不是内存的解决方案。从一个导航到另一个时内存会增加。

例如:我有一个重型表单,我从该表单导航到轻型表单,然后应在显示轻型表单之前释放重型表单占用的内存,之后它应该仅占用轻型表单的内存。

这是我使用过的示例代码。

public class Form1 extends Form {
    Form main;
    public static void includeForm1(final Form form) {
        Form1 form1 = new Form1();
        form1.showForm1(form);

    }

    public void showForm1(Form form){
        form = null;
        this.main = new Form();
        ...
        addComponent(BorderLayout.CENTER, mainContainer);
        ....
        //Navigate to Form2
        Form2.includeForm2(main);
        ...
        this.show();
    }

}

public class Form2 extends Form {
    Form main;
    public static void includeForm2(final Form form) {
        Form2 form2 = new Form2();
        form2.showForm2(form);
    }

    public void showForm2(Form form){
        form = null;
        this.main = new Form();
        ...
        addComponent(BorderLayout.CENTER, mainContainer);
        ....
        //Navigate to Form1
        Form2.includeForm1(main);
        ...
        this.show();
    }


}

我需要执行什么更改来解决内存问题?

最佳答案

如果内存增加,那是因为您保留了对某些内容的引用。即使是对层次结构中一个组件的引用也会将整个表单保留在 RAM 中,因此只需存储在全局范围中的一个按钮就可以触发该表单。

关于java - 如何在将一个页面导航到另一页面时发布 CODENAMEONE 表单(包括其所有组件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783287/

相关文章:

java - Codenameone,如何调用或加载android原生进度对话框?

java - 了解 Java 中的捕获类型(符号 '?')

java - 类内的 Xstream 类

ios - 使用 UIViewController 快速拉动刷新,无需 TableView 或 TableViewController

ios - 如何从 HealthKit 获取每日平均步数

codenameone - CN1如何处理home指示灯(iPhone X等)

android - 如何调用一个 Android Intent,该 Intent 需要来自 Codename One Native Code 的结果

java - 通用问题 - 推断类型不符合声明的界限

java - 字符串替换正则表达式

ios - 在 iOS App 中将 SQLite 数据库从 Titanium 迁移到 Ionic