본문 바로가기

Android

[8일차] AsncTask

실습 


이번에는 핸들러 생성만 

메인스레드에 어떻게 처리하면 좋겠는지 보낼거다. 



mHandler.post를 해서 Runable을 상속받은 메소드 코드로 보낸다. 



반복적인 객체는 msg를 보내고, 다형성을 생각하면 post를 보낸다. 




이런것들을 복잡해 하는 사람들 때문에 AsncTask가 있다. 

이 클래스를 상속받으면 내부에 doinbackground 에서 쓰레드로 실행시켜준다. 




실습은 일단 똑같이 한다. 



안드로이드에서 on 으로 시작되면 거의 main 쓰레드가 호출하는 함수이다. 



중간에 뭔가를 하고 싶으면 

publish ..모 메소드를 호출해서 


onPrexcute() 는 호출 전 세팅할때


onPostExecute() 는 끝나고 호출 됨.


onProgressUpdate함수 불러준다. 



오직 하나의 쓰레드가 나와서 한번에 하나씩 처리 한다. 


api 11에서 는 128개까지 가지고 있는데 그 이후는 오직 한개 이다. 




public class AsncActivity extends AppCompatActivity {
TextView message;
ProgressBar progressbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_asnc);


progressbar = (ProgressBar) findViewById(R.id.progressBar);
message = (TextView) findViewById(R.id.text_message);
Button btn_start = (Button) findViewById(R.id.btn_start);
message.setText("download");
new DownLoadTask().execute("zzz"); // 다운테스크 실행함수



}

class DownLoadTask extends AsyncTask<String, Integer, Boolean>{


@Override
protected void onPreExecute() { // 함수 호출 전 실행하는 메소드
super.onPreExecute();

progressbar.setMax(100);
message.setText("download start...");
}

@Override
protected Boolean doInBackground(String... strings) {
int progress = 0;
while(progress <= 100) {
// progress...
publishProgress(progress);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
progress += 5;
}
return true;
}

@Override
protected void onProgressUpdate(Integer... values) {// 중간에 호출 되는 함수
super.onProgressUpdate(values);
int progress = values[0];
progressbar.setProgress(progress);
message.setText("progress : " + progress);
}

@Override
protected void onPostExecute(Boolean aBoolean) { // 끝나고 호출 되는 함수.
super.onPostExecute(aBoolean);
progressbar.setProgress(100);
message.setText("progress done");
}
}
}



'Android' 카테고리의 다른 글

[8일차] 핸들러카운트다운 실습  (0) 2016.07.22
[8일차] Handler Timeout 활용  (0) 2016.07.22
[8일차]핸들러 다루기  (0) 2016.07.22
[8일차] 안드로이드 쓰레드 동작방식  (0) 2016.07.22
[8일차] ButterKnife  (0) 2016.07.22