Implementar la interfaz MessageListener
Puede utilizar la interfaz de
MessageListener para recibir los mensajes enviados por un objeto de
NonBlockingSenderDestination o los mensajes push enviados desde un iniciador push.
- Importe las clases y las interfaces necesarias.
import net.rim.device.api.io.messaging.*;
import java.io.IOException;
import java.io.InputStream;
- Defina una clase que implemente la interfaz de MessageListener.
public class MyMessageListener implements MessageListener {
- Implemente onMessage().
public void onMessage(Destination dest, Message incomingMessage)
{
- Inicialice una variable de String que contenga los datos de la respuesta.
String payload = null;
- Si la respuesta es un objeto de ByteMessage, recupere la respuesta como String y asígnelo a payload.
if (incomingMessage instanceof ByteMessage)
{
ByteMessage reply = (ByteMessage) incomingMessage;
payload = (String) reply.getStringPayload();
}
- Si la respuesta es un StreamMessage, recupera la respuesta como un objeto de InputStream.
else if(incomingMessage instanceof StreamMessage)
{
StreamMessage reply = (StreamMessage) incomingMessage;
InputStream is = reply.getStreamPayload();
- Si la respuesta es pequeña, convierta los contenidos de la transmisión en una matriz de byte.
byte[] data = null;
try
{
data = net.rim.device.api.io.IOUtilities.streamToBytes(is);
} catch (IOException e)
{
// process the error
}
- Si la conversión fue correcta, convierta la matriz de byte a un String y asígnelo a payload.
if(data != null)
{
payload = new String(data);
}
}
- Si payload contiene datos, muéstrelo.
if(payload!=null)
{
synchronized(Application.getEventLock())
{
UiApplication.getUiApplication().pushScreen
(new HTTPOutputScreen(payload));
}
}
Después de terminar:
Implemente
onMessageCancelled() y
onMessageFailed() para procesar otras notificaciones.
Puede ver una muestra de código completo, en "Muestra de código: solicitar datos mediante un objeto NonBlockingSenderDestination"
¿Le ha resultado útil esta información? Envíenos sus comentarios.