1
在GWT中,我有類MyClass
,它註冊了一些事件處理程序。有一個對象(object1
)MyClass
,在特定時刻,我想完成並使其處理程序停止監聽,因爲之後我將創建一個不同的MyClass
對象(object2
)。GWT:最終化對象並刪除它的事件處理程序
我該怎麼做?我已經嘗試過object1 = null
,但它的嘮嘮叨叨不停地聽(至少一段時間)。
在GWT中,我有類MyClass
,它註冊了一些事件處理程序。有一個對象(object1
)MyClass
,在特定時刻,我想完成並使其處理程序停止監聽,因爲之後我將創建一個不同的MyClass
對象(object2
)。GWT:最終化對象並刪除它的事件處理程序
我該怎麼做?我已經嘗試過object1 = null
,但它的嘮嘮叨叨不停地聽(至少一段時間)。
處理程序可能仍然存在,因爲gc沒有解散它們。 如果重要的是聽衆不會繼續存在,那麼他們需要註銷。
一種方法是取消註冊HandlerRegistration。例如,addClickHandler返回可以註銷的HandlerRegistration。何時以及如何執行此操作取決於您的GUI類。你可以在你的finalize方法中註銷註冊,但你可能會發現這些方法由於gc而被非常偶然地調用,當然,因爲這不是java,而是javaScript。所以concider把它們放在你的gui元素onDetach或onUnload的分離或銷燬方法中。
事實上,GWT中永遠不會調用'finalize()'方法,因爲它不存在於JavaScript中,所以無法模擬。 –