Browse Source
* commit '1f0590f2993cbfda61fd995cdf784341edcb5fa5': REPORT-66167 解决图表栏有时候无法显示某些图表的问题 DEC-22333 设计器使用一段时间后卡死feature/big-screen
superman
3 years ago
5 changed files with 82 additions and 15 deletions
@ -0,0 +1,49 @@
|
||||
package com.fr.common.listener; |
||||
|
||||
import com.fr.design.data.DesignTableDataManager; |
||||
import javax.swing.event.AncestorEvent; |
||||
import javax.swing.event.AncestorListener; |
||||
import javax.swing.event.ChangeListener; |
||||
|
||||
/** |
||||
* 管理数据集相关监听的注册 |
||||
* |
||||
* 原本的监听生命周期注册与销毁: |
||||
* |
||||
* 创建时组件时进行注册,在模板关闭时进行销毁 |
||||
* 但是在模板未关闭的这段时间,如果不断的打开和关闭某些弹窗,次数达到一定程度,会导致出现大量内存占用,除非此时关闭模板 |
||||
* |
||||
* 改成以下模式: |
||||
* |
||||
* 当组件可见或者被添加到某个大组件 注册相关监听 |
||||
* 当组件不可见或者被移除时 立即移除相关监听 |
||||
* 及时清理无效监听,减少实时内存占用 |
||||
* |
||||
* |
||||
* @author hades |
||||
* @version 11.0 |
||||
* Created by hades on 2022/2/14 |
||||
*/ |
||||
public class ManageDsListenerRegisterListener implements AncestorListener { |
||||
|
||||
private ChangeListener changeListener; |
||||
|
||||
public ManageDsListenerRegisterListener(ChangeListener changeListener) { |
||||
this.changeListener = changeListener; |
||||
} |
||||
|
||||
@Override |
||||
public void ancestorAdded(AncestorEvent event) { |
||||
DesignTableDataManager.addDsChangeListener(changeListener); |
||||
} |
||||
|
||||
@Override |
||||
public void ancestorRemoved(AncestorEvent event) { |
||||
DesignTableDataManager.removeDsChangeLister(changeListener); |
||||
} |
||||
|
||||
@Override |
||||
public void ancestorMoved(AncestorEvent event) { |
||||
// do nothing
|
||||
} |
||||
} |
Loading…
Reference in new issue