读书人

用一个简略的例子来看MIDlet的生命周期

发布时间: 2012-09-14 23:00:49 作者: rapoo

用一个简单的例子来看MIDlet的生命周期原文
原文
用一个简单的例子来看MIDlet的生命周期

用一个简单的例子来看MIDlet 的生命周期

想来估计也没有比网上教程说的更清楚了,我这里摘录的只是文字,从www.j2medev.com来获取,更详细的资料可以到www.j2medev.com上查看。我将会以一个例子跟查看官方的源代码来分析它们。

理解J2ME 的体系结构并不像想象的那么容易,我们觉得读更多的资料帮助也不大,我们

直接迈向J2ME 开发也许会对你理解J2ME 平台体系结构这个重要的概念有所帮助。在MIDP

中定义了一种新的应用程序模型MIDlet,它是被Application Management Software(AMS)管理

的。AMS 负责MIDlet 的安装、下载、运行和删除等操作。在被AMS 管理的同时,MIDlet 可

以和应用管理软件通信通知应用管理软件自己状态的变化,通常是通过方法notifyDestroyed()

和notifyPaused()实现的

MIDlet 有三个状态,分别是pause、active 和destroyed。在启动一个MIDlet 的时候,应用

管理软件会首先创建一个MIDlet 实例并使得他处于pause 状态,当startApp()方法被调用的时候

MIDlet 进入active 状态,也就是所说的运行状态。在active 状态调用destroyApp(boolean

第1 章 J2ME 技术概述

4

unconditional)或者pauseApp()方法可以使得MIDlet 进入destroyed 或者pause 状态。值得一提的

是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS 通

知MIDlet 进入destroyed 状态。在destroyed 状态的MIDlet 必须释放了所有的资源,并且保存了

数据。如果unconditional 为false 的时候, MIDlet 可以在接到通知后抛出

MIDletStateChangeException 而保持在当前状态,如果设置为true 的话,则必须立即进入destroyed

状态。下图说明了MIDlet 状态改变情况:

<!----><!---->用一个简略的例子来看MIDlet的生命周期原文<!---->

? 用一个简略的例子来看MIDlet的生命周期原文


看看我那个简单的例子
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文public?class?HelloWorld?extends?MIDlet?......{
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????public?HelloWorld()?......{?
用一个简略的例子来看MIDlet的生命周期原文????????System.out.println("这个是程序的构造函数,程序运行的时候首先调用这个");
用一个简略的例子来看MIDlet的生命周期原文????}
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????protected?void?destroyApp(boolean?unconditional)
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????throws?MIDletStateChangeException?......{
用一个简略的例子来看MIDlet的生命周期原文????????System.out.println("这个是程序的destroyed事件,当您按下退出时调用");
用一个简略的例子来看MIDlet的生命周期原文????}
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????protected?void?pauseApp()?......{
用一个简略的例子来看MIDlet的生命周期原文????????System.out.println("这个是程序的pause事件,当您按下暂停的时调用");
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????}
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????protected?void?startApp()?throws?MIDletStateChangeException?......{
用一个简略的例子来看MIDlet的生命周期原文????????System.out.println("这个是程序的active事件,程序启动时候调用");
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????}
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文}
用一个简略的例子来看MIDlet的生命周期原文
大家可以运行程序中看到这个程序的运行先后顺些。基本上就明白了程序的调用机制了。
现在大家思考下,j2me的MIDlet是怎么样运行的呢?sun在里面进行了什么样子的限制与手脚呢?
一般的应用程序都有个main入门。这里没有,为什么呢?
我想这个就是ASM的作用了,sun在后台做了很多处理,比如包括,启动容器,启动MIDlet相关的资源等等。

用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文public?static?void?main(String?args[])?...{
用一个简略的例子来看MIDlet的生命周期原文????????CommandState?state?=?new?CommandState();
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????/**//*
用一个简略的例子来看MIDlet的生命周期原文?????*?pass?resource?strings?down?to?the?native?system?menu?and
用一个简略的例子来看MIDlet的生命周期原文?????*?popup?choice?group?methods...
用一个简略的例子来看MIDlet的生命周期原文?????*/
用一个简略的例子来看MIDlet的生命周期原文????initSystemLabels();
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????/**//*
用一个简略的例子来看MIDlet的生命周期原文?????????*?We?will?try?to?handle?any?printing?at?this?level,?because
用一个简略的例子来看MIDlet的生命周期原文?????????*?displaying?JAM?command?line?errors?is?device?specific.
用一个简略的例子来看MIDlet的生命周期原文?????????*/
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????try?...{
用一个简略的例子来看MIDlet的生命周期原文????????????initializeInternalSecurity();
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????/**//*?Start?a?inbound?connection?watcher?thread.?*/
用一个简略的例子来看MIDlet的生命周期原文????????new?Thread(new?PushRegistryImpl()).start();
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????????????restoreCommandState(state);
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????????????//?handle?any?development?machine?only?functions?at?this?level
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????switch?(state.nextCommand)?...{
用一个简略的例子来看MIDlet的生命周期原文????????????case?CommandProcessor.RUN_CLASS:
用一个简略的例子来看MIDlet的生命周期原文????????????????runLocalClass(state);
用一个简略的例子来看MIDlet的生命周期原文????????????????state.nextCommand?=?CommandProcessor.EXIT;
用一个简略的例子来看MIDlet的生命周期原文????????????????break;
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????????????case?CommandProcessor.MANAGE:
用一个简略的例子来看MIDlet的生命周期原文????????????????manage(state);
用一个简略的例子来看MIDlet的生命周期原文????????????????break;
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????????????case?CommandProcessor.LIST:
用一个简略的例子来看MIDlet的生命周期原文????????????case?CommandProcessor.STORAGE_NAMES:
用一个简略的例子来看MIDlet的生命周期原文????????????????list(state);
用一个简略的例子来看MIDlet的生命周期原文????????????????state.nextCommand?=?CommandProcessor.EXIT;
用一个简略的例子来看MIDlet的生命周期原文????????????????break;
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????????????case?CommandProcessor.REMOVE:
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????????if?(DEV_STORAGE_NAME.equals(state.suiteStorageName))?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????????removeDevStorage(state);
用一个简略的例子来看MIDlet的生命周期原文????????????????????state.nextCommand?=?CommandProcessor.EXIT;
用一个简略的例子来看MIDlet的生命周期原文????????????????????break;
用一个简略的例子来看MIDlet的生命周期原文????????????????}
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文????????????????//?fall?through
用一个简略的例子来看MIDlet的生命周期原文????????????default:
用一个简略的例子来看MIDlet的生命周期原文????????????????CommandProcessor.perform(state);
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????????if?(state.status?==?CommandProcessor.MIDLET_SUITE_NOT_FOUND)?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????????System.out.println("The?MIDlet?suite?was?not?found.");
用一个简略的例子来看MIDlet的生命周期原文????????????????}?else?if?(state.initialCommand?==?CommandProcessor.INSTALL?&&
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????????????????state.status?==?CommandProcessor.OK)?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????????System.out.println("Storage?name:?"?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????????????????????????state.suiteStorageName);
用一个简略的例子来看MIDlet的生命周期原文????????????????}
用一个简略的例子来看MIDlet的生命周期原文????????????}
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????}?catch?(InvalidJadException?ije)?...{
用一个简略的例子来看MIDlet的生命周期原文????????????System.out.println("**?Error?installing?suite?("?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????????????????ije.getReason()?+?"):?"?+?
用一个简略的例子来看MIDlet的生命周期原文???????????????????????????????messageForInvalidJadException(ije));
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????}?catch?(IOException?ioe)?...{
用一个简略的例子来看MIDlet的生命周期原文????????????System.out.println("**?Error?installing?suite:?"?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????????????????ioe.getMessage());
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????}?catch?(ClassNotFoundException?ex)?...{
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????if?(state.initialCommand?==?CommandProcessor.MANAGE)?...{
用一个简略的例子来看MIDlet的生命周期原文
用一个简略的例子来看MIDlet的生命周期原文??????????????state.runExceptionMessage?=
用一个简略的例子来看MIDlet的生命周期原文????????????????????Resource.getString("The?application?cannot?be?launched.?"?+
用一个简略的例子来看MIDlet的生命周期原文????????????????????"One?of?the?application?classes?appears?to?be?missing.?"?+
用一个简略的例子来看MIDlet的生命周期原文????????????????????"This?could?be?due?to?a?mis-named?class.?Contact?the?"?+
用一个简略的例子来看MIDlet的生命周期原文????????????????????"application?provider?to?resolve?the?issue.");
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????}?else?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????System.out.println("MIDlet?class(s)?not?found:?"?+?
用一个简略的例子来看MIDlet的生命周期原文???????????????????????????????????ex.getMessage());
用一个简略的例子来看MIDlet的生命周期原文????????????}
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????}?catch?(InstantiationException?ex)?...{
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????if?(state.initialCommand?==?CommandProcessor.MANAGE)?...{
用一个简略的例子来看MIDlet的生命周期原文???????????????state.runExceptionMessage?=?Resource.getString(
用一个简略的例子来看MIDlet的生命周期原文???????????????????"The?application?cannot?be?launched.?The?application?"?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????"may?have?done?an?illegal?operation.?Contact?the?"?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????"application?provider?to?resolve?the?issue.")?+?" "?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????ex.getMessage();
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????}?else?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????System.out.println(
用一个简略的例子来看MIDlet的生命周期原文????????????????????"MIDlet?instance(s)?could?not?be?created:?"?+?
用一个简略的例子来看MIDlet的生命周期原文?????????????????????????????????ex.getMessage());
用一个简略的例子来看MIDlet的生命周期原文????????????}
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????}?catch?(IllegalAccessException?ex)?...{
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????if?(state.initialCommand?==?CommandProcessor.MANAGE)?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????state.runExceptionMessage?=?Resource.getString(
用一个简略的例子来看MIDlet的生命周期原文???????????????????"The?application?cannot?be?launched.?The?application?"?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????"may?have?done?an?illegal?operation.?Contact?the?"?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????"application?provider?to?resolve?the?issue.")?+?" "?+
用一个简略的例子来看MIDlet的生命周期原文???????????????????ex.getMessage();
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????}?else?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????System.out.println(
用一个简略的例子来看MIDlet的生命周期原文????????????????????"MIDlet?class(s)?could?not?be?accessed:?"?+?
用一个简略的例子来看MIDlet的生命周期原文????????????????????ex.getMessage());
用一个简略的例子来看MIDlet的生命周期原文????????????}
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????}?catch?(OutOfMemoryError?ex)?...{
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????if?(state.initialCommand?==?CommandProcessor.MANAGE)?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????state.runExceptionMessage?=?Resource.getString(
用一个简略的例子来看MIDlet的生命周期原文????????????????????"The?application?has?unexpectedly?quit?because?it?ran?"?+
用一个简略的例子来看MIDlet的生命周期原文????????????????????"out?of?memory.");
用一个简略的例子来看MIDlet的生命周期原文用一个简略的例子来看MIDlet的生命周期原文????????????}?else?...{
用一个简略的例子来看MIDlet的生命周期原文????????????????System.out.println("The?MIDlet?has?run?out?of?memory");
用一个简略的例子来看MIDlet的生命周期原文???&nb

读书人网 >移动开发

热点推荐