gpt4 book ai didi

java-me - 为什么在 Java ME 应用程序中使用 startApp() 而不是构造函数?

转载 作者:行者123 更新时间:2023-12-02 00:41:39 27 4
gpt4 key购买 nike

许多 Java ME 教程使用 startApp() 方法来创建和初始化对象,而构造函数留空。但是,当 MIDlet 从暂停状态恢复时,也会调用 startApp() 方法。这会导致重新初始化所有对象,并且所做的任何更改都将丢失。

我还注意到 netbeans IDE 在其自动生成的代码中,在 startApp() 中使用了许多 if(object==null) 语句来检查对象是否较早创建。

在构造函数本身中简单地完成所有对象创建和初始化是否有意义?有什么理由不这样做吗?

最佳答案

这部分是关于理解 MIDP 线程模型。

MIDlet 构造函数在哪个线程中被调用取决于谁在手机上开发了 Java 虚拟机。

开发人员倾向于仅依赖 MIDP 规范在该领域的规定,这就是 startApp、pauseApp 和 lcdui 事件处理的行为方式。

然而,只有少数情况下这很重要。

此问题的第二个方面是软件开发人员试图在 MIDlet 暂停时释放尽可能多的资源(内存、文件句柄、套接字...)。

同样,在某些情况下,MIDlet 即使在暂停时也应该挂起某些资源,但在编写此类行为时,您确实需要考虑自己在做什么(理解它比随意理解更好)。

同样值得记住的是,有些手机始终保持 JVM 进程运行。当他们还有一个不支持类卸载的 JVM 时(在 J2ME 世界中很常见),这意味着即使在 MIDlet 被完全销毁后,静态变量仍可以保留在内存中。

关于java-me - 为什么在 Java ME 应用程序中使用 startApp() 而不是构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com