package com.APP08_Thread;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Button;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.text.Editable;

public class APP08_ThreadActivity extends Activity {
    /** Called when the activity is first created. */
 ProgressBar myProgress;
 TextView Text01;
 EditText edit01;
 Button btOK;
 
 int accum=0;
 long startingMills=System.currentTimeMillis();
 boolean isRunning=false;
 String str="데이터 표시";
 Handler myHandler=new Handler();
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Text01=(TextView)findViewById(R.id.Text01);
       
        myProgress=(ProgressBar)findViewById(R.id.myProgress);
        myProgress.setMax(100);
       
        edit01=(EditText)findViewById(R.id.edit01);
        edit01.setHint("메인스레드..문자입력을 해봅니다.");
       
        btOK=(Button)findViewById(R.id.btnOK);
        btOK.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          Editable txt = edit01.getText();
          Toast.makeText(getBaseContext(),"입력한 문자>>"+txt,1).show();
         }
        });
    }
    @Override
    protected void onStart(){
     super.onStart();
     Thread myThread1=new Thread(backgroundTask,"백그라운드");
     myThread1.start();
     myProgress.incrementProgressBy(0);
    }
    private Runnable foregroundTask=new Runnable(){
     public void run(){
      try{
       int progressStep=5;
       Text01.setText(str+"\nTotal sec, so far:"
         +(System.currentTimeMillis()-startingMills)/1000);
       myProgress.incrementProgressBy(progressStep);
       accum+=progressStep;
       if(accum>=myProgress.getMax()){
        Text01.setText("백그라운드 작업 Over");
        myProgress.setVisibility(View.INVISIBLE);
       }
      }catch(Exception e){
       e.printStackTrace();
      }
     }
    };
    private Runnable backgroundTask = new Runnable(){
     public void run(){
      try{
       for(int n=0;n<20;n++)
       {
        Thread.sleep(1000); //Runnable 사용할 때 메인스레드에게 핸들러를 통해 전달
        myHandler.post(foregroundTask);
       }
      }catch(InterruptedException e){
       e.printStackTrace();
      }
     }
    };
}

위에처럼 소스를 짰는데, Android 2.3.1에서는 동작하는데, 그이상부터는 동작이 안되네요;

버젼별로 차이가 있는 건가요;;(그이상 버젼은 4.0.3버젼이랑 2.3.3버젼으로 해봤습니다.)

앞에꺼는 2.3.1버젼에서 실행한거고요. 정상적으로 실행이 되구요

1.bmp

2.3.3버젼에서는 메인스레드가 동작을 안해서 그런지, 버튼과 TextView가 화면에 뜨질 않습니다.

(이것도 사진으로 올릴려고 했는데, 파일용량이 ㅠㅠ 죄송합니다)