翻译Sun帮助文件——javax.wireless.messaging(MessageListener)
来源:互联网 发布:超恐怖的模型unity3d 编辑:程序博客网 时间:2024/05/20 02:25
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。
- 翻译Sun帮助文件——javax.wireless.messaging(MessageListener)
- 翻译Sun帮助文件——javax.wireless.messaging(BinaryMessage)
- 翻译Sun帮助文件——javax.wireless.messaging(TextMessage)
- 翻译Sun帮助文件——javax.wireless.messaging(Binary
- 翻译Sun的帮助文件——(javax.wireless.messaging.MessageConnection)
- Sun Java Wireless Toolkit 2.3 beta新增功能(翻译)
- Sun公司发布新的J2ME开发工具——Java Wireless Toolkit 2.3 Beta
- PIC_CCS CAN帮助文件(翻译)
- com.sun.xml.internal.messaging.saaj.SOAPException
- javax.servlet.ServletContextListener翻译
- javax.servlet.ServletConfig翻译
- javax.servlet.FilterConfig翻译
- javax.servlet.ServletInputStream翻译
- javax.servlet.ServletOutputStream翻译
- javax.servlet.SingleThreadModel翻译
- javax.servlet.Servlet翻译
- javax.servlet.ServletContextAttributeEvent翻译
- javax.servlet.ServletContextAttributeListener翻译
- 菜鸟学jsp(二)
- 菜鸟学jsp(三)
- 翻译Sun的帮助文件——(javax.wireless.messaging.MessageConnection)
- 翻译Sun帮助文件——javax.wireless.messaging(BinaryMessage)
- 翻译Sun帮助文件——javax.wireless.messaging(TextMessage)
- 翻译Sun帮助文件——javax.wireless.messaging(MessageListener)
- 3-TIER数据库开发工具---VisualDBTOOLS 3.0
- 由零开始做 Dialog (SDK版) — 在 VC + MSDN 下取巧篇
- Windows中文输入法的实现
- 网页制作一点通
- 绿色之旅(1) 史前Java
- J2EE - 如何在JBoss中解决自动增长键值问题
- 一篇迟到的译文――JBossTwo 归来
- CMM概观