我只是无法弄清楚当我执行一些事件时如何删除侦听器。我有一些泄漏问题使用websockets,这可能会修复它。Java删除侦听器,执行回调时
final WebSocket w = asyncHttpClient.prepareGet(url)
.execute(new WebSocketUpgradeHandler.Builder().build())
.get();
w.addWebSocketListener(new WebSocketTextListener() {
public void onMessage(String message) {
listener.onMessage(responseMessage);
// Here is the place I want to do my w.removeWebSocketListener(l);
}
@Override
public void onFragment(String s, boolean b) {
}
public void onOpen(WebSocket websocket) {
}
@Override
public void onClose(WebSocket webSocket) {
}
@Override
public void onError(Throwable throwable) {
}
});
的问题是,当我创建WebSocketTextListener lis = new ....
并传递有像一个对象需要其他的对象和其他对象是依赖于这一点,我现在仍然允许做我想做的。
看起来这是简单的东西,但无法弄清楚。
取消注释行时会发生什么? –
现在这是不可行的,因为我没有听众的名字。如果我将代码更改为WebSocketTextListener lis = new WebSocketTextListener(){.... w.removeWebSocketListener(lis); } eclipse说,我需要有最终的WebSocketTextListener lis = ...现在它抱怨说,侦听器可以不实例化,但现在我现在被允许添加行WebSocketTextListener lis = null之前。因为这是最后的 – user1424119
你仍然没有很大的意义。 '最后的WebSocketTextListener lis = new WebSocketTextListener(){.... w.removeWebSocketListener(lis); }'应该工作,为什么不'呢? –