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버젼에서 실행한거고요. 정상적으로 실행이 되구요
2.3.3버젼에서는 메인스레드가 동작을 안해서 그런지, 버튼과 TextView가 화면에 뜨질 않습니다.
(이것도 사진으로 올릴려고 했는데, 파일용량이 ㅠㅠ 죄송합니다)
흠...위젯들은 xml 상에 있는거라...xml을 보지 않고서는 딱히 머라 답을 드릴수가 없습니다.
버전별로 테스트할때 화면사이즈는 모두 동일한건가요?
화면사이즈에 따라서 문제가 발생했을 가능성도 있을것 같습니다.
maybe 상위버전에서 클래스나 메서드가 사라진게 있지 않을까요?
로그는 안나요나요?