본문 바로가기
반응형

안드로이드/기타14

안드로이드 Application Class 이번 주제는 어느 정도 규모가 있는 안드로이드 애플리케이션을 제작하다 보면 필수적으로 건들게 되는 Application Class에 대해서 알아보려고 합니다. 사실 이것저것 예제를 따라 많이 사용을 했었던 Class인데, 막상 뭐냐고 물으니 대충 앱 정보를 가지기 위해 전역 변수 등의 정보를 가지고 있는 Class가 아닐까? 하는 정도의 수준에 머물러 있었습니다. 그래서 이번에 한 번 제대로 알아봐야 하지 않을까 하는 생각에 글을 끄적여 봅니다. 일단 Application Class가 언제 실행되는지 알아야 할 필요가 있습니다. 먼저 안드로이드 스튜디오를 통해 안드로이드 앱을 제작하게 되면, 개발자가 볼 필요는 없지만 안드로이드에서도 숨겨진 main 함수가 존재하고 있다는 것을 알 수 있습니다. main.. 2022. 9. 11.
ANR(Application Not Responding)이란? 이번에 모 회사의 코딩 테스트 문제를 풀고 있는데, 객관식 문제에서 ANR에 대해 묻는 문제가 나왔습니다. 아무래도 안드로이드 애플리케이션을 운영하다보면, 구글 플레이에서 보여주는 통계에서 ANR 비율도 보여주기 때문에 ANR이 무엇인지 모를 수는 없지만, 아무래도 정확하게 알지 못할 수도 있겠다 싶어 확실히 정리하고 가려고 합니다. ANR, 그러니까 Application Not Responding은 뭔가 깊은 뜻이 따로 있을 것 같지만 어이없게도 번역 그대로 애플리케이션이 응답하지 않는다는 의미입니다. 일단 이 ANR이 뜨기 위해서는 안드로이드의 mainthread가 5초 이상 동작하지 않아야 한다고 공홈에 적혀 있습니다. 그러니까 이 ANR은 비정상 종료라고 하는 exception이 발생해 애플리케이.. 2022. 8. 6.
LiveData vs RxJava 회사에서 코드 수정을 위해서 처음 프로젝트를 열었던 날, 기상천외한 리액터킷이라는 안드로이드 라이브러리를 발견할 수 있었습니다. 이 친구는 IOS의 부산물로 IOS 개발자가 AOS를 개발하면서 자신이 가지고 있던 개념을 쉽게 AOS에 적용시켜 코드를 작성하려는 의도가 담긴 코드였습니다. 딱히 잘못되었다거나 나쁜 것은 아니지만, 문제는 이 라이브러리가 지원 중단이 된 지 꽤 오래된 코드라는 점입니다. 결국 입사하자마자 라이브러리를 분리하는 작업을 거쳐야 했고, 자연스럽게 ReactorKit + RxJava로 구성되어 있던 코드들을 DataBinding + MVVM으로 전환하는 작업을 했었습니다. 이 작업을 진행하는 중에 RxJava 코드를 완전히 분리하고 제거하는 과정을 거쳤는데, 생각해보니 LiveDat.. 2022. 7. 8.
AAC 데이터 바인딩이란? 오랜만에 면접을 보게 되었습니다. 무조건 '이직을 해야해' 하고 봤던 면접이 아니어서인지, 요즘 너무 공부를 안해서인지는 잘 모르겠지만, 스스로가 생각하기에도 제대로 답변을 못했다는 느낌이었는데, 아니나 다를까 불합격이었습니다. 사실 거기까지였으면 크게 신경 안썼을지도 모르겠습니다만, 면접 이후 피드백을 받은 건 되게 오랜만이라 면접을 복기하게 되었습니다. 확실히 생각보다 요즘은 새로운 트렌드를 따라가야 한다는 생각 때문인지, 기존에 사용하던 코드들을 왜 사용했는지, 그리고 왜 버렸는지 기억이 나지 않더라구요. 그래서 이번에는 이 부분에 대해서 한 번 살펴볼까 합니다. 이 글에 들어가기 전에 안드로이드의 데이터바인딩 라이브러리와 웹이나 다른 곳에서 사용하는 데이터바인딩은 유사하지만 조금씩 다른 측면을 가.. 2022. 5. 25.
안드로이드 앱 실행 시간(cold, hot, warm start) 안드로이드 애플리케이션은 결국, 사용자에게 빠르고 편리한 시스템을 제공하는데 목적을 둡니다. 편리한 시스템은 기획에서부터 UI/UX에 대한 고찰을 통해 이루어집니다. 물론 개발 단계에서도 추가적으로 지속적인 수정이 이루어져야 하지만요. 사실 이때까지 만들어온 애플리케이션은 볼륨이 크지 않아 충분히 실행 속도를 신경써야 할 정도로 느리지 않았습니다. 그저 스플래시 화면에서 대기하고 넘어가는 시간보다 훨씬 더 적은 시간동안 애플리케이션 로딩을 끝마쳤습니다. 그래서 오늘의 주제는 어떻게 더 효율적으로 애플리케이션의 속도를 올려서 쓸모 있는 애플리케이션을 만들까가 아니라 어느 정도의 속도를 보장해주어야 하는지, 그리고 cold start, hot start, warm start에 대한 정의 정도가 되겠습니다. .. 2021. 10. 20.
안드로이드 관련 유용한 오픈소스 및 라이브러리 링크 안드로이드 관련 작업을 하다보면 github를 들러 자신이 개발하고자 하는 목적에 맞는 오픈소스를 찾아보거나 라이브러리를 이용해야할 때가 있습니다. 사실 모든 부분을 직접 개발하면 얼마나 좋은 개발자겠습니다만, 안드로이드는 업데이트 속도가 중요하고, 개발 속도 역시 여타 프로그램과는 다르게 속도가 중요하기 때문에 많은 회사나 사람들이 오픈 소스나 공식적으로 지원되는 라이브러리들을 사용 github를 들러 자신이 개발하고자 하는 목적에 맞는 오픈소스를 찾아보거나 라이브러리를 이용해야할 때가 있습니다. 사실 모든 부분을 직접 개발하면 얼마나 좋은 개발자겠습니다만, 안드로이드는 업데이트 속도가 중요하고, 개발 속도 역시 여타 프로그램과는 다르게 속도가 중요하기 때문에 많은 회사나 사람들이 오픈 소스나 공식적으.. 2021. 4. 23.
728x90