public class Runtime { private static Runtime currentRuntime = new Runtime(); public static Runtime getRuntime() { return currentRuntime; } private Runtime() {} public void exit(int status) { throw new SecurityException( "MIDP lifecycle does not support system exit."); } public native long freeMemory(); public native long totalMemory(); public native void gc(); }
Runtime是一个基本类。从中可以看到:
- Runtime使用的是最简单的单实例模式。
- 提供了计算内存的大小和gc的方法。
- 注意:exit只是抛出SecurityException,并没有杀死进程。
这说明,MIDP中是没有进程的概念的。Midlet相当于容器里的一个组件。每个MIDlet的启动和关闭并不是意外着进程的结束。这跟PC电脑上的概念非常的不同。
在手机中,存储区域分为ROM和RAM。每个Java的程序是放在ROM中的,运行的时候是放在RAM中的。不同于PC,没有磁盘的概念。启动程序是从ROM调到RAM中。
启动一个Java程序时候,首先打开JVM,将ROM中的Java程序调到JVM中,JVM找到Midlet的startApp来开始执行。当退出的时候,需调用 detroyApp。
所以,当程序向自己调用exit()的时候只能得到一个安全的异常。但不一定会退出的。当要退出的时候是调用destroyApp来退出的。同时实现notifyDestroyed来通知JVM已经退出了。