2012-04-04 3 views
0

상황에 따라 업데이트하려는 TextView가 있다고 생각합니다. 모든 1-2 초마다 상황을 확인하고 필요한 경우 TextView의 텍스트를 업데이트하는 스레드를 갖고 싶습니다. 아이디어가 있으십니까?Android : 주기적으로 스레드에서 UI 업데이트

+3

스레드는 과잉 될 수있다. 'postDelayed (runnable, 2000)'과 함께 Handler가 여러분의 필요에 적합 할 수 있습니다. http://developer.android.com/reference/android/os/Handler.html – DeeV

답변

2

당신은 당신의 GUI에서 핸들러를 사용할 수 있습니다 : 스레드에

Handler hnd = new Handler() { 
    public void handleMessage(Message msg) { 
     if (msg.what == 101) { 
      //update textview 
     } 
    } 
} 

패스 HND하고 스레드가 수행

Message m = new Message(); 
m.what = 101; 
hnd.sendMessage(m); 

이이 가정 문서를 참조 별도의 스레드에서 GUI 스레드에보고해야하는 작업을 수행 중이라면 문자 메시지를 보낼 수도 있습니다.

+0

답변에 중요한 오타가 하나 있습니다. 메서드는 handleMessage (R이없는 경우) 여야합니다. 귀하의 답변을 수정하려했지만 편집을 거부했습니다. 여기를 확인 http://developer.android.com/reference/android/os/Handler.html – fersarr

+0

@fersarr thanx 해결 – marcinj

1

다른 스레드에서보기를 업데이트하려면 처리기를 사용해야합니다. postDelayed를 사용하면 지연을 설정할 수 있습니다.

handler.postDelayed

3

나는 같은 것을 할 : 그와 관련된 몇 가지 블록 조작이 아니라면

public class MyClass { 
    private Handler hUpdate; 
    private Runnable rUpdate; 

    public MyClass() { // Constructor 
    hUpdate = new Handler(); 
    rUpdate = new Runnable() { 
     // Do your GUI updates here 
    }; 

    Thread tUpdate = new Thread() { 
     public void run() { 
     while(true) { 
      hUpdate.post(rUpdate); 
      sleep(500); 
     } 
     } 
    } 
    tUpdate.start(); 
    } 
} 
관련 문제