본문 바로가기

안드로이드

Android - 핸들러 thread / runOnUIThread(); handler.post(new Runnable(){ 이거 보다 Task말고 Retrofit 배울 예정

Thread

 

https://recipes4dev.tistory.com/m/143

 

핸들러 473page ~ 484page

 

Thread 3가지

 

main thread (=UI thread)

handler thread

event thread

 

 

안드로이드는 main thread로 

onCreate가 끝나야 그림을 그립니다. 이 일을 담당하고 있는 쓰레드가 main thread=ui thread 가 하고 있다.

 

예를 들어

새로운 쓰레드로 다운(I/O)을 받거나 한 후 그 걸 직접적으로 UI thread에 접근해서 그린다고 방해..오류!

그러지말고 핸들러 쓰레드에 접근하면 된다!

 

모든 쓰레드는 main쓰레드에 접근해서 그림 그리고 싶으면 이벤트 핸들러에 등록하면 된다.

그럼 차례대로 해준다. 언제 쓰레드 끝나고!

 

아래와 같이 쓴다.

 

handler.post(new Runnable(){

@Override

public void run(){

textView.setText("vlaue 값 : "+ value);

  }

}

 

이거랑 똑같은 runOnUIThread(); -> 핸들러한테 던져주는 쓰레드임. 단점: 콜백 받기가 좀.. 별로

 

 

하지만 메인에서 콜백 받는게 아니라서 별로..

 

AsyncTask를 쓰면 된다.  

 

인터페이스를 넘김. 

 

 

 

Retrofit이 더 좋다 데이터 json gson써서 자바 오브젝트로 다  까지 바꿔주기까지한다

 

그림은 쓰레드 종료시에 그려진다.

 

 

 

AsynTask

 

 

 

자바에서는 함수를 파라미터로 못넘기니까 클래스(인터페이스)를 넘김.

새로운 쓰레드에서 메인 쓰레드에 접근하기 위해서.

그림은 쓰레드 종료시에 그려진다.

 

그래서 한번 밖에 못그리니까 아래 4가지 함수 오버라이드 해서...

 

중지하려면 전역에다가

 

일시정지 쓰레드를 종료

 

Thread t = new Thread

Thread.sleep(500); //이렇게 잠깐이라도 자야지 멈출 수 있다.

t.interupt()

 

하지만 단점이 있으니

 

결론은  다 알아거 해주는 Retrofit을 사용하기 위해서 내일 배울예정!

 

 

 

 

'안드로이드' 카테고리의 다른 글

Android - Retrofit  (0) 2020.07.29
ConstraintLayout 체인  (0) 2020.07.28
constructor, getter, setter 단축키 Alt + Insert  (0) 2020.07.23
RecyclerView  (0) 2020.07.23
ListView (RecyclerView를 쓰는 이유를 알기위해서)  (0) 2020.07.22