개발모음집

asnktask cancle시 ui 멈춤 본문

Android

asnktask cancle시 ui 멈춤

void 2017. 6. 9. 22:05

프래그먼트 끌 때 onDestroyView에서 asnktask를 껐는데

ui 동작을 하지 않았다.



http://webnautes.tistory.com/1082 에 보면 


앱의 모든 컴포넌트(Activity, Service, Content Provider, BroadcastReceiver 등)들은 같은 스레드내에서 실행됩니다. 필요에 따라 추가 스레드를 생성할 수 있습니다.  UI 스레드가 thread-safe하지 않기 때문에  스레드 사용시 다음 2가지를 지켜야 합니다.

  • UI 스레드가 블록(대기)되지 않도록 해야합니다.
  • UI 스레드 외에 다른 스레드에서 UI 컴포넌트 접근를 하면 안됩니다.

위에서 UI 스레드는 블록되면 안된다 했는데  문제는 안드로이드는 single thread model모델을 따르기 때문에 문제가 생깁니다. 만약 오랜 시간이 걸리는 작업을 UI 스레드에서 수행한다면  작업이 완료 될때 까지  UI 스레드가 대기해야 하므로 UI는 먹통이 됩니다. 예를 들어 다수의 파일들을 다운로드 받는 작업을 UI 스레드에서 수행하면 모든 파일의 다운로드가 완료될 때까지 UI는 반응이 없게 됩니다. 


라고 나와있다.


블록하지말란다. 후 그럼 runnable쓰는 걸로 ..