J2ME那些事儿――005(1)

      本节主要学习J2ME常见的类,他们是基础,所以应该充分理解这些类的应用关系,包括各类之间的层次关系、类的继承关系以及他们应用开发中的应用关系等。
      每个类的介绍,都围绕两个问题来展开:(1)它的接口原型――API如何描述(任何编程设计的接口);(2)它的应用价值――开发设计中在哪里最频繁使用。
     
类列表:
1、MIDlet 类
2、Display 类
3、Displayable 类
 
一、MIDlet 类
 
      1、API接口原型
 
      先摘自MID Profile API 的一个截图如下图所示:
 
     
      由此可见,MIDlet类位于以下包中:java.microedtion.midlet,因此,在所有的MIDlet中,都必须引入这个包:import javax.microedtion.midlet.*。注意:这里midlet表示包时必须小写,而MIDlet类的前三个字母大写。一般都称MIDP应用程序为MIDlet,可以表示整个应用程序,也可以只表示扩展了MIDlet类的子类,即MIDP应用程序的主类。
Constructor Summary
protected
MIDlet ()
Method Summary
 int
checkPermission (String permission)
protected abstract  void
destroyApp (boolean unconditional) 关闭MIDlet
 String
getAppProperty (String key) JADJAR文件获取属性;
 void
notifyDestroyed () 请求停止MIDlet
 void
notifyPaused () 请求暂停MIDlet
protected abstract  void
pauseApp () 暂停MIDlet
 boolean
platformRequest (String URL)
 void
resumeRequest () 请求激活MIDlet
protected abstract  void
startApp () MIDlet设为活跃状态;
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
      2、常见应用
     
      众所周知,J2ME程序都是从MIDlet类开始执行,系统规定了MIDlet的生命周期。规定MIDlet程序有三种状态:1.暂停状态;2.运行状态;3.销毁状态。
      系统在执行MIDlet程序时,首先构造一个MIDlet类型的对象,然后使程序进入到暂停状态,按照生命周期的规定,系统会自动调用MIDlet对象的startApp方法使程序进入到运行状态,开始程序的执行。如果在创建MIDlet对象的过程中,或者是调用startApp的方法中发生了异常,则系统会自动调用MIDlet对象的destroyApp方法进行到销毁状态,也就是使程序退出。
      (1)startApp方法
      在系统第一次运行的时候,系统会自动调用该方法使系统进入到运行状态。当系统从暂停状态切换到运行状态以前,系统也会自动调用该方法。
      (2)pauseApp方法
      当系统从运行状态切换到暂停状态以前,会自动调用该方法。
      (3)destroyApp方法
      当系统发生异常退出程序以前,会自动调用该方法。该方法有一个boolean类型的参数,如果该参数为true则代表该方法必须清理和释放资源,如果为false可以抛出一个MIDletStateChangeException异常来表明它不想立即退出。
      在MIDP2.0中,MIDlet类中新增了两个方法,下面介绍一下这两个方法的作用,依次是:
      (1)checkPermission
      该方法是MIDP2.0的安全许可机制,在程序的实际使用过程中,可以通过该方法来检查MIDlet是否允许特定的操作,例如联网、发送短信息等等。
      如果不允许该操作则返回0,允许返回1,未定义则返回-1。
      (2)platformRequest
      使用该方法可以访问某些系统功能,例如通用的功能主要有两种:
      (a)使系统打开浏览器访问某个特定的网址:
       platformRequest(“ http://wap.qq.com.cn”);
      这个功能可以实现用来实现提示用户下载新的程序版本等功能。
      (b)使手机拨打特定的电话号码:
       paltformRequest(“tel:10000”);
       则系统会自动利用手机来拨打10000。
 
二、Display 类
 
      1、API接口原型
 
      摘自MID Profile API 的一个截图如下图所示:
 
 
      下图为方法列表:
Method Summary
 void
callSerially (Runnable r) 判断Displayable类实例是否在屏幕上显示;
 boolean
flashBacklight (int duration) 生产闪灯效果;
 int
getBestImageHeight (int imageType)
 int
getBestImageWidth (int imageType)
 int
getBorderStyle (boolean highlighted)
 int
getColor (int colorSpecifier)
 Displayable
getCurrent () 获得当前Displayable类的实例;
static Display
getDisplay (MIDlet m) 获得Display类的实例;
 boolean
isColor () 判断设备是否支持彩色;
 int
numAlphaLevels ()
 int
numColors () 获取设备能用的色彩位数或灰度;
 void
setCurrent (Alert alert, Displayable nextDisplayable) 显示所指定的报警对话框的实例和被指定Displayable类的实例;
 void
setCurrent (Displayable nextDisplayable) 显示指定Displayable类的实例;
 void
setCurrentItem (Item item)
 boolean
vibrate (int duration) 产生振动效果;
 
      2、常见应用
     
       Display 类有两个最主要的作用:
      (a) 获得屏幕的属性。例如屏幕是否是彩色的,以及支持的颜色数量等信息。
      (b)控制屏幕的显示。例如使屏幕显示某个指定界面或者获得当前的显示界面等
      每个 MIDlet 只有一个 Display 类型的对象,该对象控制该 MIDlet 程序中所有的显示控制。所以在创建 Display 对象时,必须指定该 Display 对象和哪个 MIDlet 对象对应。
      创建 Display对象的时候只能使用 Display 类中的静态方法 getDisplay 方法来进行创建。
 
三、Displayable 类
 
      1、API接口原型
      摘自MID Profile API 的一个截图如下图所示:
 
Method Summary
 void
addCommand (Command cmd) 将命令关联到Displayable类的实例;
 int
getHeight ()
 Ticker
getTicker (): 获得屏幕标题;
 String
getTitle () :获得屏幕的滚动牌;
 int
getWidth ()
 boolean
isShown () 判断Displayable类实例是否在屏幕上显示;
 void
removeCommand (Command cmd) Displayable类的实例撤销与命令的关联;
 void
setCommandListener (CommandListener l) 关联CommandListenerDisplayable类的实例;
 void
setTicker (Ticker ticker) :设定屏幕的滚动牌;
 void
setTitle (String s) :设定屏幕的标题;
protected  void
sizeChanged (int w, int h)
 
      从上图可以看出,Displayable 类是一个抽象屏幕类,它有两个直接子类:Screen类和Canvas类(也都是抽象类)。
      所有设备上显示的屏幕类都是Displayable类的子类。
 
      2、常见应用
 
      最频繁的应用,举例如下:
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
 
public class DemoMidlet extends MIDlet {
 
     private Form form;
      private Display display;
      public DemoMidlet() {
       // TODO Auto-generated constructor stub
  
      }
      protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
       // TODO Auto-generated method stub
      }
      protected void pauseApp() {
       // TODO Auto-generated method stub
      }
      protected void startApp() throws MIDletStateChangeException {
       // TODO Auto-generated method stub
           if(display==null){
                display = Display.getDisplay(this);
            }
           if(form==null){
                 form= new Form();    //Form是Screen类的子类,Screen是Displayable的子类
                display.setCurrent(form); //把Displayable的子类对象作为当前的显示屏幕
          }
       }
}
 
 
      下一节,我们将详细了解Screen类及其子类。由于本人水平有限,有不足之处还望各位给予指导和帮助。
 
 

你可能感兴趣的:(api,基础,职场,j2me,休闲)