2016-11-24 7 views
0

Switch onCheckedChanged(CompoundButton buttonView, boolean isChecked) 메소드에서 많은 작업을하고 있습니다. 즉 Google지도 클러스터 관리 (값에 따라 클러스터 항목 필터링)를 수행하고 있습니다.Android Switch - onCheckedChangeListener를 호출하기 전에 UI 변경을 토글하는 방법

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

내 문제는 내가 스위치는 UI 변경 (토글 + 색상 변경)을 수행 한 후 무거운 물건을 어떻게 할 것입니다. 그렇지 않으면 UI가 매우 느려집니다. 클러스터는 메인 (UI) 스레드에서 그리기 때문에 클러스터를 다루기 때문에 다른 스레드에서이 무거운 작업을 수행 할 수 없습니다.

질문 : 스위치가 UI에서 작업을 수행 한 후 onCheckedChange를 호출하거나 onCheckedChange 메소드 실행을 지연시키는 방법이 있습니까? 당신은 당신이

`onCheckedChanged 사용할 수있는 체크 박스 선택의 변화에 ​​대한 몇 가지 작업 (CompoundButton buttonView을, 부울의 IsChecked)

을 수행하고 싶지만마다 트리거 될이 기억하는 경우에

답변

0

당신의 상태를 변경 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를 발견했다. 또한 스위치는 토글하기 위해 300ms가 필요했습니다. – KasparTr