精通J2ME中的Hello World

原创 2004年08月31日 00:37:00
       初学java的时候一般都写过如下的HelloWorld程序,今天我准备详细讲述一下J2ME中的HelloWorld。无论你是J2ME开发高手还是新手都应该读读这篇文章,我想它会对你有所帮助!

      在javax.microedition.midlet包中定义了一个非常重要的类MIDlet,所有J2ME的应用程序都必须扩展这个类,只有这样才可以使得应用管理软件(Application Management Software)管理MIDlet,包括下载、安装和删除。在被AMS管理的同时,MIDlet可以和应用管理软件通信通知应用管理软件自己状态的变化,通常是通过方法notifyDestroyed()和notifyPaused()实现的。最后MIDlet还可以通过getAppProperty(String name)读取在jad文件中定义的属性值。

      MIDlet有三个状态,分别是pause,active和destroyed。在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是我们平时所说的运行状态。在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。值得一提的是destroyApp(boolean unconditional)方法,很多开发者对unconditional参数不是很理解,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。

      下面是根据上述问题我编写的一个J2ME中的HelloWorld程序,他比j2se中的helloworld要复杂一点。新手可以仔细看看。
package com.j2medev.mingjava;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener
{
    private Display display;
    private Form mainForm;
    private StringItem stringItem;
    private Command exitCommand = new Command("Exit", Command.EXIT, 1);

    public static final String WEB_SITE = "WEB_SITE";

    protected void startApp() throws MIDletStateChangeException
    {

        initMIDlet();
        display.setCurrent(mainForm);

    }

    private void initMIDlet()
    {
        display = Display.getDisplay(this);
        mainForm = new Form("Hello World");
        stringItem = new StringItem(null, null);
        String text = getAppProperty(WEB_SITE);
        stringItem.setText(text);
        mainForm.append(stringItem);
        mainForm.addCommand(exitCommand);
        mainForm.setCommandListener(this);
    }

    protected void pauseApp()
    {

    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {
        System.out.println("exit the application");
    }

    public void commandAction(Command cmd, Displayable display)
    {
        if (cmd == exitCommand)
        {
            try
            {
                destroyApp(false);
                notifyDestroyed();
            } catch (MIDletStateChangeException e)
            {
                e.printStackTrace();
            }
        }
    }

}

HelloWorldMIDlet.jad文件内容如下,如果你还不是很清楚jad文件请参考MIDP中的属性问题。尤其是当你在安装MIDlet到手机上的时候。

MIDlet-Jar-Size: 2128
MIDlet-1: HelloWorld,/icon.png,com.j2medev.mingjava.HelloWorld
MIDlet-Jar-URL: HelloWorldMIDlet.jar
MicroEdition-Configuration: CLDC-1.0
MIDlet-Version: 1.0.0
MIDlet-Name: HelloWorldMIDlet
MIDlet-Vendor: www.j2medev.com
MicroEdition-Profile: MIDP-1.0
WEB_SITE: www.j2medev.com

编写第一个C语言程序-Hello World

前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法。学习任何一门语言,首先要掌握的肯定是语法。学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算机、手...
  • wolf09311
  • wolf09311
  • 2014年11月16日 22:57
  • 46399

第三章初识laravel,helloWorld的MVC实现

第三章初识laravel,helloWorld的MVC实现   一、简单粗暴的laravel4部曲 Laravel的程序主干,对我们使用者来说,主要就是4步: 第一步:绑定路由 第二步:写c...
  • lihaitao_1
  • lihaitao_1
  • 2016年01月05日 13:07
  • 1313

【Python】Hello World 输入输出

冲着标题来的就告诉大家怎么写Hello World吧~ print('Hello,World')        //单引号也可以换成双引号,注意print前面不要有空格啥的哦~ 尼玛,这么简单。是不是...
  • wait_for_taht_day5
  • wait_for_taht_day5
  • 2016年01月23日 21:21
  • 4237

iOS开发指南 从Hello World到App Store上架 第4版 pdf part2

  • 2017年08月01日 19:44
  • 70MB
  • 下载

三维交互开发(2)-DxStudio的hello world

  • 2010年08月17日 15:13
  • 314KB
  • 下载

mac os下 ionic 2 安装(一),酷炫的hello world 先跑起来!!

看到这篇文章,说明您对ionic应该有所了解了,一个开发Hybird app的框架,集成angular和phonegap。目前最新版为2.0.0-rc.3。现网上大多数中文资料都是基于ionic1.x...
  • cyan747
  • cyan747
  • 2016年12月06日 17:49
  • 1750

小白学PyQt5(2):Hello World

看十遍,不如做一遍,快动动你们的手跟着xycy制作第一个带GUI的Python程序吧!...
  • gan19951101
  • gan19951101
  • 2017年11月18日 18:24
  • 88

6个变态的C语言Hello World程序——更好的理解C(2、3)

接上一篇文章,6个变态的C语言Hello World程序——更好的理解C  ,这篇文章给大家带来变态的Hello World程序2、3 hello2.c #include main(){ ...
  • codebat
  • codebat
  • 2014年08月19日 18:26
  • 868

2D游戏引擎Allegro 系列教程(二) Hello world!

本系列文章由sky编写,转载请注明出处。 http://blog.csdn.net/qq573011406/article/details/8172949 作者:袁全伟   邮箱: qq...
  • qq573011406
  • qq573011406
  • 2012年11月12日 18:48
  • 3067

Cocos2d-JS Hello world(新人贴,大神请指教或者绕路)

关于cocos2d-js的教程非常多,由于cocos2d-x版本更新得比较快,网上的大多都是以前的3.0或者上一点点的版本,而刚接触的大白下载了最新版本cocos2d-x 3.10, 在cocos建立...
  • taijiyun
  • taijiyun
  • 2016年05月13日 00:02
  • 258
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:精通J2ME中的Hello World
举报原因:
原因补充:

(最多只允许输入30个字)