黑莓程序可以使用两种方式实现,一种是用j2me,另一种是用黑莓自己的api。用j2me实现时,启动类是继承了MIDlet的类;用黑莓自己的api实现时,启动类往往是继承了Application的类或继承了UIApplication的类,我们往往会把main方法写在继承了Application的类或继承了UIApplication的类中。
这里存在一个误解,我们会觉得用黑莓自己的api实现时,当程序启动时会先去寻找继承了Application的类或继承了UIApplication的类,然后在执行其中的main方法,就像j2me程序启动时会先去寻找继承了MIDlet的类一样。实际上并不是这样。用黑莓自己的api实现时,程序启动时会到所有类中寻找第一次出现的main()方法,找到就开始执行该main方法,即使其它类中也有main方法,甚至是继承了Application的类或继承了UIApplication的类中的main方法,它也不会再去执行。这也可以解释为什么黑莓程序用j2me实现时要指定继承了MIDlet的类,但是黑莓程序用自己的api实现时却不用指定继承了Application的类或继承了UIApplication的类。所以以后如果碰到用黑莓自己的api实现的程序启动时没有执行继承了Application类或继承了UIApplication的类中的代码,原因可能是其它的类中有main方法。