Java 静态变量保留以前启动时的值

Java 静态变量保留以前启动时的值,java,blackberry,java-me,Java,Blackberry,Java Me,我的j2me应用程序要关闭时调用destroyApp()和notifyDestroyed() 当我在blackberry上运行它时,在第二次启动时,静态变量的值将与上次运行时的值相同 为什么他们没有得到初始值?如何确保应用程序初始化静态变量?我猜您的意思是“在第二次启动时,静态变量将与上次运行时的值不同” 静态变量只能在应用程序的整个生命周期内保持其值。当调用destroyApp()/notifyDestroyed()时,应用程序结束,因此值丢失 要在多次运行中保持状态,请使用。Yep,blac

我的j2me应用程序要关闭时调用
destroyApp()
notifyDestroyed()
当我在blackberry上运行它时,在第二次启动时,静态变量的值将与上次运行时的值相同

为什么他们没有得到初始值?如何确保应用程序初始化静态变量?

我猜您的意思是“在第二次启动时,静态变量将与上次运行时的值不同”

静态变量只能在应用程序的整个生命周期内保持其值。当调用
destroyApp()
/
notifyDestroyed()
时,应用程序结束,因此值丢失


要在多次运行中保持状态,请使用。

Yep,blackberry MIDlet保留静态变量的值。这是一个问题,我认为解决这个问题的唯一方法是,在启动时,我们需要为静态值分配null值。例如,如果静态变量声明如下: 公共静态字符串状态=null; 在中间的生命周期中,该值设置为“关闭”; 然后在下一次启动应用程序时,该值将保持“closed”状态,而不是null。

这表明BlackBerry MIDlet存在一个已知问题,至少对于使用静态推送注册表的MIDlet而言是如此。他们建议的解决方法要么在
startApp
中重新定义静态变量,要么摆脱静态推送

这篇文章看起来值得大量引用,因为有一个很好的代码示例和问题分析:

我能想到的最简单的例子是:

public class BasicMIDlet extends MIDlet {

    private static byte myByte = Byte.MIN_VALUE;

    public void startApp() {
        System.out.println("My byte: " + myByte);
        myByte = Byte.MAX_VALUE;
        notifyDestroyed();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }


}
每次应用程序启动时,您都希望myByte输出到-128, 但这是我的输出:

--------------------------------------------------------

Starting BBTest
Started BBTest(159)
Foreground BBTest(157)
My byte: -128                          <------------
Foreground net_rim_bb_ribbon_app(83)
Exit BBTest(159)
Starting BBTest
Started BBTest(160)
Foreground BBTest(157)
My byte: 127                          <------------
Foreground net_rim_bb_ribbon_app(83)
Exit BBTest(160)
Starting BBTest
Started BBTest(161)
Foreground BBTest(157)
My byte: 127                          <------------
Foreground net_rim_bb_ribbon_app(83)
Exit BBTest(161)
--------------------------------------------------------
--------------------------------------------------------
起动试验
开始BBT测试(159)
前景测试(157)

我的字节:-128 RIM是否已确认该问题?如果是,问题编号是多少?@DavidAndreoletti您是否关注答案中的链接-一个标有“Blackberry支持论坛讨论”的链接?