Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[refactor] 마이페이지 / 로딩프로그레스바 - 애니메이션 간의 실행순서 보장 로직 개선 #298

Merged
merged 2 commits into from
Jun 2, 2024

Conversation

sxunea
Copy link
Contributor

@sxunea sxunea commented May 18, 2024

📝 Work Description

문제 상황은 저번 PR을 참고해주세요 !

저때 delay를 통해 100ms동안 강제로 기다리게해 로딩프로그레스바 비가시화 -> 데이터 불러와 애니메이션 시작 이라는 순서를 보장하게 해줬는데, delay는 UI스레드 자체를 블로킹하므로 성능을 저하시킨다는 단점이 여전히 존재한다고 느껴서 다른 방법으로 문제를 해결해 개선했습니다.

✅ 개선 사항

view 클래스의 post함수를 통해서 블로킹없이 실행 순서를 보장시켜주었습니다.

Causes the Runnable to be added to the message queue. The runnable will be run on the user interface thread.

view.post(runnable)은 핸들러에 연결된 메시지큐에 runnable객체를 넣어서 전달해주는 방식이기때문에 실행코드들이 메시지 큐에 추가되고, 선입선출됩니다. 따라서 현재 수행 중인 다른 UI 업데이트(여기서는 progress bar의 invisible로의 변경)가 완료되고 User 데이터를 활용한 UI업데이트 로직(애니메이션)이 실행되는 순서가 보장되기 때문에 기존의 문제가 해결되고, delay를 사용하지 않음으로 블로킹 또한 없도록 개선해주었어요 !

@sxunea sxunea added 혜선 🐱 refactor 🧹 코드 리팩토링 labels May 18, 2024
@sxunea sxunea requested a review from leeeha May 18, 2024 09:49
@sxunea sxunea self-assigned this May 18, 2024
setUpUserDataByGoal(data)
animate2weeksSaveGraph(data.amountSavedTwoWeeks)
animate2weeksSpendGraph(data.amountSpentTwoWeeks)
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 덕분에 스레드 간 통신에 사용되는 Handler, Looper, 메시지 큐 개념에 대해 복습할 수 있었어요 ㅎㅎ
delay 함수로 UI 스레드 블로킹 하는 것보다 훨씬 나은 방식인 거 같습니다! 👍

@sxunea sxunea merged commit 10d0881 into main Jun 2, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactor 🧹 코드 리팩토링 혜선 🐱
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants