与不删除它们相比,添加和删除事件侦听器更有效吗?

时间:2015-12-24 12:32:40

标签: java android

我们说我有一个开关按钮'和一个普通的按钮'。 如果打开SWITCH BUTTON,则启用NORMAL BUTTON。 否则,如果关闭SWITCH BUTTON,则禁用NORMAL BUTTON。

在这种情况下,添加和删除NORMAL BUTTON的事件监听器以释放内存消耗是否更有效?

例如:

public void sample() {
    Switch switchButton = (Switch) findViewById(R.id.sample_switch);

    switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        Button normalButton = (Button) findViewById(R.id.sample_button);

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked) {
                normalButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //Some codes...
                    }
                });
            } else
                normalButton.setOnClickListener(null);
        }
    });
}

1 个答案:

答案 0 :(得分:3)

如果它实际上确实节省了内存,那么它将是最小的和恒定的,因此只有在开发过程的最后阶段才值得优化。 eventListener在注册时不会降低性能,而且它所占用的内存很少,可以忽略不计。

您可以取消注册事件的原因是您不希望按钮链接到此功能。禁用该按钮用于防止按钮激活其链接功能。这是一个细微差别,在前端开发中,您永远不会从事件中取消注册按钮,以免用户单击按钮。

要回答你的问题,是的,它可能会保存最微小的内存,但由于它只有一个按钮,因此取消注册的优化规模将无法提及。