2

我正在使用 SwitchonCheckedChanged(CompoundButton buttonView, boolean isChecked)方法做繁重的工作。即我正在做谷歌地图集群管理(根据值过滤集群项目)。

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    // memory heavy stuff starts happening here
}

我的问题是,我希望在 Switch 完成 UI 更改(切换 + 颜色更改)之后发生繁重的事情。否则用户界面非常滞后。由于我正在处理集群,因此我无法在另一个线程上执行这些繁重的工作,因为集群正在主(UI)线程上绘制。

问题:有没有办法在 Switch 在 UI 上完成它的事情后调用 onCheckedChange 或延迟 onCheckedChange 方法的执行?

4

1 回答 1

0

如果您想在更改复选框选择时执行某些任务,您可以使用

`onCheckedChanged(CompoundButton buttonView, boolean isChecked)

但请记住,每次您通过 checkbox.setChecked(true) 以编程方式更改复选框的状态时都会触发此操作。

我建议您在复选框上使用 onClickListener 以仅在用户单击按钮时收到通知(但这完全取决于您的要求)如果您想延迟复选框的执行,请以这种方式在处理程序块中编写代码。

  new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
// memory heavy stuff starts happening here
        }
    },DELAY_IN_MILLISECONDS);
于 2016-11-24T13:39:22.150 回答