[캡스톤] 안드로이드 토스트 메시지 출력시 프로그램 종료 이슈

이정연·2023년 5월 4일
0

Project

목록 보기
8/11

본 포스팅은 캡스톤 프로젝트 UI 제작과정의 리뷰입니다.

문제

목표는 위 이미지처럼 제스처를 통해 유튜브를 제어했을 때, 어떻게 제어되었는가를 토스트 메시지로 출력하고 싶었다.

예를 들어, 동영상이 멈췄으면 "정지" 문구가 다시 재생되는 상황이면 "재생" 문구가 나오도록.

그런데 토스트 메시지가 출력될 때 프로그램이 강제 셧다운 되는 에러가 발생했다 ... 😭

문제는 바로 스레드에 있었다!!

스레드 이슈

먼저 스레드가 무엇인지 궁금한 분들은 OS Interview 포스팅을 참고하길 바란다.


안드로이드 OS는 UI 자원에 Main Thread와 Sub Thread가 동시 접근하여 동기화 이슈를 발생시키는 것을 방지시키기 위해 UI 자원 사용은 UI Thread에서만 가능하도록 만들었다.

그래서 현재 Main Thread가 돌아가는 동안은 Toast 메시지나 getText 같은 UI에 직접 접근을 하는 함수의 호출을 runOnUiThread를 통해서만 호출이 가능하다.

따라서, 아래 이미지와 같이 Toast 클래스를 runOnUiThread 내부에 넣어줘야 정상 작동한다.

profile
0x68656C6C6F21

0개의 댓글