我在实现方法的侦听器时遇到了一个非常糟糕的问题。
在我目前的工作中,为了验证新信息,我必须每5秒请求一个方法,所以我想实现一个方法,在每次新信息出现时通知我,在每5秒丢弃请求的方法。
(我已经读过关于观察者模式的文章,但没有成功实现。)
致以最诚挚的问候
更多信息:目前我正在重写smackxmpp库中的这个方法,以便在msgs队列中存储新消息
public void processMessage(Chat chat, Message message) {
if (message.getType() == Message.Type.chat) {
req = message.getBody().toString();
String[] temp = { chat.getParticipant().toString(), req };
System.out.println(temp[0]+"says:"+temp[1]);
synchronized (lock) {
msgs.add(temp);
}
}
}
然后每隔0.5秒执行一次此方法,以验证新消息:
public String[] getMessage() {
synchronized (lock) {
String[] data;
data=msgs.poll();
return data;
}
}
我正在尝试设置一个通知系统,每次执行processmessage时都会通知我。
1条答案
按热度按时间zpgglvta1#
好吧,我设法解决了我的问题。
我实现了一个基于观察者模型的监听器。为此,我必须实现一个称为xmppmessagelistener的接口:
在xmpphandler类中,processmessage和getmessage方法的类i添加了用于添加和删除侦听器的方法和用于存储侦听器的linkedlist:
然后我在processmessage方法中进行了一些交换,以警告侦听器:
现在,每当通过创建xmppmessagelistener接收到消息时,我都可以通过任何方法得到通知,并通过重写readmsg方法来决定如何处理该消息: