Java me Midlet如何调用静态变量?
我有一个midlet,它有一个静态变量。我需要保留在此变量中创建的所有实例的记录。但它不像静态变量那样工作。我的代码段如下所示。我正在sun wireless toolkit 2.5.5上运行此midlet。我可以从该工具包中创建同一midlet的许多对象,但我的计数器仍然只显示1Java me Midlet如何调用静态变量?,java-me,midlet,Java Me,Midlet,我有一个midlet,它有一个静态变量。我需要保留在此变量中创建的所有实例的记录。但它不像静态变量那样工作。我的代码段如下所示。我正在sun wireless toolkit 2.5.5上运行此midlet。我可以从该工具包中创建同一midlet的许多对象,但我的计数器仍然只显示1 public class SMS extends MIDlet implements CommandListener { private Display display; private TextFie
public class SMS extends MIDlet implements CommandListener {
private Display display;
private TextField userID, password ;
public static int counter ;
public SMS() {
userID = new TextField("LoginID:", "", 10, TextField.ANY);
password = new TextField("Password:", "", 10, TextField.PASSWORD);
counter++;
}
public void startApp() {
display = Display.getDisplay(this);
loginForm.append(userID);
loginForm.append(password);
loginForm.addCommand(cancel);
loginForm.addCommand(login);
loginForm.setCommandListener(this);
display.setCurrent(loginForm);
public void commandAction(Command c, Displayable d) {
String label = c.getLabel();
System.out.println("Total Instances"+counter);
每次计数器仅显示创建的1个对象 MIDlet只实例化一次。有点 MIDP运行时可能不允许您在同一个MIDlet已经运行的时间内启动两次 如果退出MIDlet,计数器将返回0,因为它仍然是RAM中的值,Java虚拟机进程将终止 在某些诺基亚系列40手机上,JVM进程从未终止,因此您可以使用此进程显示自上次开机以来MIDlet的创建次数 静态变量存储在JVM内存中的类对象中。您需要了解类加载(以及J2ME中通常缺乏对类卸载的支持),以确定可以在静态变量中存储什么 我建议移动
counter++
到startApp()
,因为每次MIDlet出现在前台时都可以调用它
这还允许您将计数器存储在RMS记录中以提高准确性。我见过的唯一一个允许静态变量在应用程序的“调用”之间保留的系统是Android。我从未见过在MIDlet调用之间维护静态数据的J2ME设备。但是,MIDlet套件中的MIDlet可以共享静态数据,如上所述,而其中至少有一个正在运行 如果希望在MIDlet调用之间维护数据,则需要使用javax.microedition.rms中的记录存储API,该API提供对持久存储的访问