본문 바로가기

분류 전체보기130

[Android] Dive into Android LiveData. Basic concept of LiveData Library. 안녕하세요. 골드입니다. 오늘은 안드로이드에서 사용하는 LiveData에 대해서 정리하려고 합니다. LiveData는 이미 많은 분들이 사용하고 있을 것이라고 생각되는데요. 단순히 MVVM 패턴을 사용한다고 해서 기계적으로 ViewModel을 생성하고 변수를 LiveData로 래핑해서 Observe한 형식으로 만들어서 사용한 제 자신을 위한 글이기도 합니다. 1. LiveData를 사용하는 이유 LiveData를 사용하는 이유는 구글이 권장한 안드로이드 개발 방식인 이유도 있겠지만, 중요한 건 Observe하다는 것과 수명 주기를 인식하는 것이라고 생각됩니다. - Observe하다는 것은 LiveData가 감싸고 있는 객체를 항상 최신 데이터로 유지할 수 있다는 뜻입니다. 해당 변수를 구독하고 있는 곳에.. 2022. 8. 2.
[Android/Kotlin] 원격 호스트에 의해 강제로 끊겼습니다. 윈도우 환경 cmd(명령 프롬프트 호출) -> adb kill-server -> adb start-server 원인 : 아무래도 adb를 연결하고 해제하는 과정에서 어떤 연결이 해제되지 않고 남아있어서 생기는 오류라고 생각된다. 그렇기 때문에 강제로 제거한 후 재시작해서 해결할 수 있었다. 2022. 5. 24.
[Android] Spinner(or RecyclerView) Custom Scrollbar. 안녕하세요 골드입니다. 종종 스크롤 바를 커스텀해야 하는 일이 있습니다. 오늘은 간단하게 적용할 수 있는 커스텀 스크롤을 구현하도록 하겠습니다. RecyclerView나 Spinner처럼 Scrollbar 속성을 선언할 수 있는 모든 View에 적용할 수 있습니다. 1. Drawable xml 파일 선언 Scrollbar는 두 부분으로 나뉘어 있습니다. 배경에 전체 스크롤 길이를 나타내는 Track 부분과 현재 스크롤 위치를 나타내는 Thumb입니다. 필요에 따라 두 개의 drawable xml 파일을 만들어 각각 적용하면 됩니다. 먼저 Track을 위한 drawable xml 파일입니다. 기본적으로 xml을 이용한 Shape 그리는 방법과 동일합니다. 다음은 Thumb 부분입니다. 파일은 drawabl.. 2022. 4. 27.
[CS] 안드로이드 면접 질문 대비. 운영체제 프로세스. 안녕하세요 골드입니다. 오늘은 프로세스에 대해서 글을 쓰도록 하겠습니다. 프로그램과 프로세스 프로그램 : 저장장치에 저장되어 있는 정적인 상태 프로세스 : 실행을 위해 메모리에 올라온 동적인 상태 프로그램 -> 프로세스 전환 바탕화면에 프로그램들이 즐비해 있고 우리는 마우스 클릭이나 손가락을 터치해서 해당 프로그램을 실행시킨다. 프로그램에서 프로세스로 전환되는 순간이라고 할 수 있겠다. 프로그램에서 프로세스로 전환된다는 것은 프로그램이 운영체제로부터 프로세스 제어 블록(PCB)를 받고 메모리 위에 올라간다는 말이다. 프로세스 제어 블록 (Process Control Block) 프로세스를 처리할 때 필요한 다양한 정보들을 갖고 있는 데이터 구조. 운영체제 영역에 저장되어 운영체제가 관리한다. PCB는 이.. 2022. 3. 10.
[Android] Fragment Manager에서 replace()와 add()의 차이점 안녕하세요 골드입니다. 오늘은 Fragment에서 사용하는 함수 add()와 replace()에 대해 글을 작성하겠습니다. 면접에서 이 부분을 애매하게 알면서 대답을 못했습니다. 간단하게 알고 있었던 부분은 add() 단순 추가, replace()는 기존 fragment를 remove()하고 새롭게 호출된 fragment로 대체한다는 점이었다. 이미지로 보면 이렇다. add()는 기존 fragment 위에 덮어 쓰이고 기존 fragment에 대한 다른 함수 호출을 하지 않기 때문에 단순히 fragment가 onAttach() - onResume()까지 호출되면서 쌓이게 된다. Fragment A : onAttach() - onResume() : Fragment B 밑에서 실행중 Fragment B : o.. 2022. 2. 24.
[CS] 안드로이드 면접 질문 대비. Network OSI Model. 안녕하세요 골드입니다. 오늘은 네트워크 기본 개념인 OSI 7 Layer에 대해서 간단하게 글을 작성하겠습니다. OSI 모델이 생겨난 배경 저는 이런 시대에서 살지 않았지만 한 때 같은 제조사의 컴퓨터만 데이터를 주고받을 수 있었던 시대가 있었다고 합니다. 이러한 불편함을 해소하고자 국제 표준화 기구에서 네트워크의 기본 구조를 일곱 계층으로 나누어 규격화하면서 생긴 것이 OSI 7 계층입니다. 각 계층은 각자의 역할이 있고, 만약 문제가 생기더라도 특정 계층만 확인하면 된다는 장점이 있습니다. OSI(Open Standards Interconnection) 7 Layer 7 계층 - 응용 계층 이메일 & 파일 전송, 웹 사이트 조회 등 애플리케이션 서비스를 제공한다. 클라이언트 측에서 송수신하는 데이터를.. 2022. 2. 13.
[Android] app bundle명 변경 후 Binding Error (InflateException) 안녕하세요 골드입니다. 오늘은 잘 작동하던 XML 파일에서 뜬금없이 발생하는 Binding 에러에 대해서 글을 작성하도록 하겠습니다. Caused by: android.view.InflateException: Binary XML file line ## 문제없이 발생하던 XML 파일에서 갑자기 이러한 에러가 발생하는 경우가 있습니다. 원인은 정확히 알 수 없지만 아무래도 Binding에 작은 에러가 있다고 생각됩니다. 이런 경우 먼저 app module build.gradle 파일에서 바인딩 관련 코드를 삭제한 후 Sync한 후 ReBuild, 다시 바인딩 코드를 삽입하고 Sync, ReBuild 하면 해결됩니다. bundle Binding 코드 false(혹은 삭제) Sync -> Rebuild Proj.. 2021. 11. 22.
[Android] SHA-1 확인하는 방법 (zsh: permission denied) 안녕하세요 골드입니다. 오늘은 안드로이드 스튜디오 에서 프로젝트 SHA-1을 확인하는 방법에 대해서 글을 작성하도록 하겠습니다. 매우 간단합니다. SHA-1은 프로젝트의 고유 넘버이자 Key입니다. 여러 곳에서 쓰일 수 있는데 특히 안드로이드 앱을 파이어베이스와 연결하거나 할 때 사용합니다. 먼저 안드로이드 스튜디오로 들어가서 하단에 Terminal을 클릭한 후 ./gradlew signingReport를 작성합니다. 완료 메시지가 나오면 스크롤을 올려서 확인할 수 있습니다. 만약 zsh: permission denied ./gradlew 가 나타난다면 터미널에 chmod +x gradlew를 입력한 후 다시 ./gradlew signingReport를 작성하면 됩니다. 여기까지 골드였습니다. 감사합니다. 2021. 11. 19.
[Android/Kotlin] RecyclerView 구분선, 아이템 간격 Decoration 안녕하세요 골드입니다. 오늘은 리사이클러뷰를 활용할 때 사용하면 좋은 Decoration에 대해서 글을 쓰도록 하겠습니다. XML에서 Margin 설정하고 구분선 View를 그리지 않고 Decoration을 사용하는 이유. Decoration을 사용하면 아이템 index별로 간격을 설정할 수 있습니다. 이렇게 하면 0번째 아이템과 마지막 아이템의 간격이 미묘하게 다르게 생성되는 문제를 해결할 수 있습니다. XML에서 정의하는 구분선과 Decoration에서 그리는 View는 성능 차이가 있습니다. XML에서 뷰를 그리는 작업이 더 무거운데, 리사이클러뷰를 선언하여 리스트를 불러올 땐 단순히 낱개의 아이템을 불러오지 않고 대량의 아이템을 불러오기 때문에 이는 작지 않은 차이를 만들어 냅니다. Recycle.. 2021. 11. 18.
반응형