翻译Sun帮助文件——javax.wireless.messaging(MessageListener)

翻译 2003年02月05日 19:34:00

javax.wireless.messaging
  Interface MessageListener

MessageListener接口提供了一个可使程序在有信息到来时得到通知的机制。

  当有信息到来时,notifyIncomingMessage()将被调用。程序必须用MessageConnection的receive()方法接收信息。MessageListener却不应直接调用receive(),而应该使用一个新的线程,或调用一个不在此接口内部实现的方法来间接地调用receive()。比如下面一个简单的MessageListener实现将展示如何使用MessageListener。

  此接口提供的机制使得程序不需要在receive()方法中将线程挂起。

  如果有不止一个信息在接近的时刻到达,此接口的实现将可能被同步地被通知。程序必须同步某些部分以处理上述情况。

__________________________________________________________________________

简单的MessageListener实现

以下的代码展示了如何使用MessageListener。在这个例子中一个独立的线程被用来处理信息的接收。

 import java.io.IOException;
 import javax.microedition.midlet.*;
 import javax.microedition.io.*;
 import javax.wireless.messaging.*;
 public class Example extends MIDlet implements MessageListener {
      MessageConnection messconn;
      boolean done;
      Reader reader;
       //初始化
      public void startApp() {
        try {
         // 建立连接
           messconn = (MessageConnection)
           Connector.open("sms://:6222");
          // 注册listener
            messconn.setMessageListener(this);
           / / 建立接受信息的线程
           done = false;
            reader = new Reader();
            new Thread(reader).start();
            } catch (IOException e) {
              // 处理错误
            }
        }
       // 同步
      public void notifyIncomingMessage(MessageConnection conn) {
          if (conn == messconn) {
          reader.handleMessage();
      }
      }
      // 关闭连接
      // 停止线程
      public void pauseApp() {
         done = true;
         try {
          messconn.close();
         } catch (IOException e) {
             //处理错误
         }
      }
      // MIDlet 停止
      // @param unconditional forced shutdown flag
      public void destroyApp(boolean unconditional) {
            done = true;
            try {
           messconn.setMessageListener(null);
           messconn.close();
            } catch (IOException e) {
               // 错误处理
            }
       }
      //用另外的线程处理信息接收则
      // notifyIncomingMessage()可以很快返回
      class Reader implements Runnable {
           private int pendingMessages = 0;
  
          // 处理接收信息的实际工作
           public void run() {
             while (!done) {
              synchronized(this) {
                 if (pendingMessages == 0) {
                    try {
                          wait();
                          } catch (Exception e) {
                             // 处理错误
                   }
                 }
                pendingMessages--;
              }
 
             // 使用的MessageListener好处
             // 这个线程可由同样的机制激活
            // 来处理别的事件
            //而不仅是接收信息
  
             try {
                Message mess = messconn.receive();
                 } catch (IOException ioe) {
                     // 处理错误
                 }
              }
         }
 
       public synchronized void handleMessage() {
           pendingMessages++;
           notify();
       }
  
     }
 }

 ________________________________________________________________________

Method Detail

 notifyIncomingMessage
 public void notifyIncomingMessage(MessageConncetion conn)

 当由信息到来是由系统调用,并且每一条信息都将引发此方法被调用。

 提示:
   此方法的实现必须快速的返回,不应做任何不必要的操作。程序不应该在此方法中接收或处理信息。它只应激发
程序处理信息的线程。

Parameters:
  conn:信息抵达的MessageConnction。

以SpringMVC框架为中心疯狂扩展-06、MessageListener实时监听ActiveMQ中的消息

1、在spring-activemq.xml中新加入listenerContainer和syxTopicDest等配置,实现消息监听容器,在connectionFactory中加入clientId。 ...
  • sunyx1130
  • sunyx1130
  • 2016年07月16日 11:20
  • 2451

CHM文件(已编译的 HTML 帮助文件)打开不显示的解决办法

今天早上下了个CHM的文档,打开发现无法显示内容,如下图:            一开始以为CHM文件的问题,研究了一下发现不是,有2种方法可以解决: ...
  • Inite
  • Inite
  • 2016年07月06日 10:33
  • 313

制作已编译的html帮助文件

http://www.cnblogs.com/cm186man/archive/2008/03/10/1098896.html引用 HTML帮助文档从结构上来看可分为两个部分,运行器和文档内容。它的...
  • aidem_brown
  • aidem_brown
  • 2014年08月04日 15:05
  • 887

IAR参数变量(从IAR的帮助文件里翻译的)

IAR参数变量您可以为路径和参数使用参数变量,例如,当您在选项对话框中指定include路径时,或者当需要基于当前上下文的类似宏的扩展时,例如在工具的参数中。您可以使用广泛的预定义参数变量以及创建自己...
  • weixin_39871788
  • weixin_39871788
  • 2017年12月19日 16:38
  • 62

Sun公司推荐的Java编码规范

1 介绍(Introduction)   1.1 为什么要有编码规范(Why HaveCode Conventions) 编码规范对于程序员而言尤为重要,有以下几个原因: - 一个软件的生命周...
  • dubinglin
  • dubinglin
  • 2017年03月23日 10:58
  • 187

Java创始人漫谈Sun与Oracle的历史恩怨

《eWeek》网络版近日刊登了对Java创始人James Gosling的专访。Gosling在专访中谈到了此前一些未公开的内幕,包括他为何会在甲骨文收购Sun之后从甲骨文离职。 当Gosling领...
  • zhangphil
  • zhangphil
  • 2015年02月13日 21:04
  • 1880

顺应潮流 - Sun公司软件开源经历对今天的启发

Sun Microsystems 创建于1982年。1995年Sun Microsystems开发了[Java]技术,第一个通用软件平台。在1997年Sun Microsystems开始推出其新的64...
  • mingtianhaiyouwo
  • mingtianhaiyouwo
  • 2016年06月15日 19:51
  • 532

查看jdk Sun /Open Jdk 源码包说明

今天想学习一下javac的编译原理,可是sun/OpenJdk  代码Oracle官网没有提供,比如说找javac编译器“词法分析”JavacParser没有找到,所以需要下载导入需要的源码包。 一:...
  • u011687186
  • u011687186
  • 2016年12月03日 19:31
  • 721

手动创建简单CHM帮助文件

CHM是英语“Compiled Help Manual”的简写,即“已编译的帮助文件”。这是一个HTML格式的帮助文档,源文件就是HTML文件以及jpg、gif等等HTML所支持的元素。网上有许多的资...
  • zp357252539
  • zp357252539
  • 2016年12月30日 11:22
  • 197

【翻译】关于对IDEA-Project的官方帮助文档翻译

前言      之前还在学习Shiro框架的使用,后面经身边朋友(猿)介绍开始用Git作为本地的版本控制(暂时不用Github),在使用Git的时候发现Git确实有很多惊人的魅力所在,特别是分支的管理...
  • nthack5730
  • nthack5730
  • 2016年05月25日 23:04
  • 14442
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:翻译Sun帮助文件——javax.wireless.messaging(MessageListener)
举报原因:
原因补充:

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