기억 저장소

클라우드 기반 인공지능 개발과 DevOps 실무

프론트엔드/안드로이드 스튜디오

안드로이드 스튜디오 : 스레드 / 핸들러 / ThreadObtainMessage 실습코드/ ThreadObtainMessageTest 실습코드

하늘.98 2022. 2. 5. 11:58

이론 및 설명 보기  ↓ 

https://hanul0147.tistory.com/290

 

안드로이드 스튜디오 : 스레드 / 핸들러 / ThreadObtainMessage / ThreadObtainMessageTest

새로운 프로젝트를 만들면, 자동으로 매인액티비티가 생성되고, 앱이 실행되면 하나의 프로세스에서 처리... => 이벤트 처리 : 기능들도 동일 프로세스에서 처리.. 대기시간이 긴 네

hanul0147.tistory.com

 

 

 

 

새로운 프로젝트를 만들면,
자동으로 매인액티비티가 생성되고, 앱이 실행되면 하나의 프로세스에서 처리...
=> 이벤트 처리 : 기능들도 동일 프로세스에서 처리..

대기시간이 긴 네트워크 요청등의 기능을 수행할 경우,
화면에 보이는 UI 멈춤상태가 될 때가 많다...
=> 이와 같은 문제 해결 방안으로 스레드를 사용...
    즉, 하나의 프로세스에서 멀티 스레드 방식으로 사용...

스레드 : 동시 수행이 가능한 작업 단위.
멀티 스레드의 장점 : 동일 프로세스에서 메모리의 리소스를 공유하여 
사용되기 때문에 자원 관리가 용이

단점: 동시에 동일한 리소스에 접근할 경우 데드락(DeadLock)현상이 발생.
 = > 데드락(DeadLock) : 동시에 두 곳 이상에서 요청이 발생했을 경우,
                                 어떤 것을 먼저 처리할 지 판단이 불가능한 현상.

만약 , 지연시간이 길어지는 앱의 경우, 
오랜시간 작업하는 코드를 별도로 분리하여 나중에 UI에 적용하는 방법을 채택  

서비스 : 백그라운드에서 처리 / 사용자에게 알림 / 브로드캐스트 
스레드 : 동일프로세스에서 처리되기 때문에 결과 값 / UI 직접접근은 하지 못하기 때문에 핸들러를 통해 전달 해야 한 다 

스레드 사용방법
1. Thread 클래스를 상속
  new 클래스().start()

2. Runnable 인터페이스를 구현 
  new Thread(Runnable)

--------------------------------------------------------------------------------------------------------------------

actvity_main.xml

============================================================================

MainActivity.java

====================================================================

스레드 시작 버튼을 누를 시 value 값이 순차적으로 1 씩 올라간다 .