2012-09-17 3 views
0

버튼의 색상을 변경할 수있는 코드를 주기적으로 3 초마다 실행하려고합니다.UI에서 버튼 색상을 주기적으로 업데이트하는 코드를 실행하십시오.

지금까지 내가 가진 :

ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(2); 

// This schedule a runnable task every 2 minutes 
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() { 
    public void run() { 

     queryFeedback2(); // display the data 
    } 
}, 0, 3, TimeUnit.SECONDS); 

이 코드는 코드의 조각을 실행하지만 결과 내 UI를 업데이트하지 않습니다.

첫째, 내 UI 업데이트 관련 문제는 무엇입니까?

둘째, 주기적으로 내 코드를 실행해야하는 방식입니까? 더 좋은 방법이 있습니까?

답변

0

예, 사용할 수있는 옵션은 거의 없습니다.

  1. 스레드
  2. 의 Runnable
  3. TimerTask를 their answer here에 alex2k8에서 언급 한 바와 같이

: (원래 러너와 함께)

final Runnable r = new Runnable() 
{ 
    public void run() 
    { 
     tv.append("Hello World"); 
     handler.postDelayed(this, 1000); 
    } 
}; 

handler.postDelayed(r, 1000); 

을 또는 우리가 예를 들어 일반 스레드를 사용할 수 있습니다 :

Thread thread = new Thread() 
{ 
    @Override 
    public void run() { 
     try { 
      while(true) { 
       sleep(1000); 
       handler.post(r); 
      } 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

thread.start(); 

당신은 단지 도우미 해당 명령을 보내는 데 사용 객체로 메시지 실행을위한 큐 및 처리기로 전송 을 할 수있는 명령대로 실행 가능한 객체를 고려할 수 있습니다.

자세한 내용은 당신은 처리기에서 UI를 업데이트 할 수 있습니다 여기에 http://developer.android.com/reference/android/os/Handler.html

있습니다. 핸들러, 스레드 사용에 대한 자습서가 있습니다. here.

위에서 언급 한 옵션 중 선택하는 것은 실제로 어떤 기능이 필요한지에 따라 달라집니다. 만약 당신이 단지 몇 가지 간격으로 뭔가를 할 필요가 다음 위의 중 하나가 잘되어야합니다.

+0

정확합니다. 처리기를 사용해야합니다. –

관련 문제