마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

쓰레드에 대해서...?

0 추천
아래같이 쓰레드를 사용하면 시간이 한참흐른후에 폼이 로드가 됩니다
전 폼이 로드한다음에 쓰레드가 작동돼서  value.setText에 숫자가 올라가는걸
표시하고 싶은데 어떻게 하면 되죠?
 
===============================================
Timer timer;
TimerTask second;
private TextView value;
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
        setContentView(R.layout.phone_list);
 value = (TextView)findViewById(R.id.txtValue);
 TimerCreate();
}
 
private void TimerCreate(){
 timer = new Timer();
 timer.schedule(new second(), 0, 100);
 
}
 
 class second extends TimerTask   { 
  @Override
  public void run()
  {
   RunnableUpdate();
  
  }
 }; 
    protected void RunnableUpdate() {
  Runnable updater = new Runnable()
  {        
   public void run()
   {   
    int num = 0;
    for(int i=0; i<9999;i++){
     num += i;
    }
    value.setText("value = "+num);
   }
  };
  handler.post(updater);
    }
   
헨씀히포 (3,660 포인트) 님이 2014년 6월 26일 질문

2개의 답변

0 추천
onCreate 마지막에서 핸들러를 통한 딜레이를 대략 500ms 줘보시고 시작해보세요

복잡하거나 네트웍 연결이 필요한것이 아니라면 500ms면 충분합니다.

너무 길다싶으면 이 값을 줄여가면서 테스트해보시고요...
nicehee (73,100 포인트) 님이 2014년 6월 26일 답변
아무리 값을 고쳐도 어플실행이 좀 잇다가 되고  value.setText에 마지막 num값이 표시가 됩니다
0 추천
일단 2가지 문제점이 보이네요.

 

1. updater 에서 for문을 10000번 다 돈 뒤에 setText를 해준다.

2. ui thread와 background thread가 분리되어 있지 않다.

 

일단 이 2개를 해결해보세요.
갈무리 (12,430 포인트) 님이 2014년 6월 27일 답변
그걸 몰라서 질문을 한건데 오히려 질문한 사람한테 해결해보라면 제가 왜 질문을 하겠습니까?
...