为监听器创建单独的 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 收集它,你应该避免使用它们.