2016-11-24 4 views
0

Я делаю тяжелую работу в коммутаторе onCheckedChanged(CompoundButton buttonView, boolean isChecked). А именно, я выполняю управление кластерами Карт Google (элементы кластера фильтров на основе значений).Android Switch - как переключить изменение пользовательского интерфейса перед вызовом onCheckedChangeListener

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

Моя проблема заключается в том, что я хочу, чтобы тяжелый материал произошло после того, как коммутатор сделал его изменения пользовательского интерфейса (тумблер + изменение цвета). В противном случае пользовательский интерфейс очень отсталый. Поскольку я имею дело с кластерами, я не могу делать этот тяжелый материал в другом потоке, потому что кластер использует основной (UI) поток.

Вопрос: Есть ли способ обработать onCheckedChange, который будет вызван после того, как коммутатор выполнил свое действие в пользовательском интерфейсе или способ задержки выполнения методов onCheckedChange?

ответ

0

, если вы хотите, чтобы выполнить задачу по изменению выбора CheckBox можно использовать

`onCheckedChanged (CompoundButton buttonView, логическое IsChecked)

но делать помните, что это будет срабатывать каждый раз, когда вы изменяете состояние checkbox programatically через checkbox.setChecked (true).

Я бы порекомендовал вам использовать onClickListener на флажке, чтобы получать уведомление только тогда, когда пользователь нажимает кнопку (но это полностью зависит от вашего требования) Еще раз, если вы хотите отсрочить выполнение вашего флажка, напишите свой код внутри обработчика блокируйте этот путь.

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
// memory heavy stuff starts happening here 
     } 
    },DELAY_IN_MILLISECONDS); 
+0

Спасибо, только что нашел ту же ссылку здесь http://stackoverflow.com/questions/21380951/android-sleep-wait-delay-function. Также коммутатору необходимо было переключиться на 300 мс. – KasparTr

 Смежные вопросы

  • Нет связанных вопросов^_^