为监听器创建单独的 class
Creating separate class for listener
为侦听器创建单独的 class 有什么好处,或者有什么优势?下面哪个代码更有效,为什么?我什么时候应该创建单独的 class?
为 TextWatcher
单独 class
mEditText.addTextChangedListener(mNumberWatcher);
TextWatcher mNumberWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
};
没有分开class
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
当需要在我们的代码中多次使用相同的侦听器时,您应该为侦听器使用单独的 class,在很多情况下都没有。 classes.
您应该创建一个单独的 class 或内部静态,以适合您的设计模式。正常的内部 classes 或 Anonymous
实例化能够导致内存泄漏,因为它们持有 main class 的引用并且可能不允许 GC
收集它,你应该避免使用它们.
为侦听器创建单独的 class 有什么好处,或者有什么优势?下面哪个代码更有效,为什么?我什么时候应该创建单独的 class?
为 TextWatcher
单独 classmEditText.addTextChangedListener(mNumberWatcher);
TextWatcher mNumberWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
};
没有分开class
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
当需要在我们的代码中多次使用相同的侦听器时,您应该为侦听器使用单独的 class,在很多情况下都没有。 classes.
您应该创建一个单独的 class 或内部静态,以适合您的设计模式。正常的内部 classes 或 Anonymous
实例化能够导致内存泄漏,因为它们持有 main class 的引用并且可能不允许 GC
收集它,你应该避免使用它们.