Skils/Android

프로젝트 관련 글[Android] 네이버 간편 로그인(Kotlin) 어플을 사용하다 보면 어플의 로고가 뜨고 메인화면으로 넘어가는 구조를 보신 적이 있을 것입니다.Android에서는 SplashActivity로 구현합니다.대략적인 구조는 다음과 같습니다.최초 화면 진입점인 Splash Activity에서 자동 로그인을 요청하고, 실패했다면 Login 화면으로, 성공했다면 Main 화면으로 넘어갑니다.자 이제 그럼 궁금증은 자동 로그인을 요청하는 곳은 어디이며, 어떠한 로직으로 결과를 반환하는가?입니다.크게 remote 요청과 local 요청이 있습니다.remote 요청 : 서버 요청으로 인한 결과 반환local 요청 : Room, DataStore, sharedPreference 등 Android 내부..
이번 프로젝트에서 네이버 지도 API를 사용하기 때문에 로그인도 네이버 간편 로그인을 사용하기로 했습니다.저는 설정했던 과정과 작성했던 코드와 그에 대한 설명을 적어볼까 합니다.앱을 등록하는 글은 다른 블로그에도 많더라고요. Gradle 설정저는 arr 파일을 다운로드하고 gradle에 추가하는 방법을 선택했습니다.다운로드한 파일을 project 탭으로 전환시켜서 lib 폴더에 복사해 줍니다. 이후 해당 arr 파일을 dependency에 추가해 줍니다.dependencies{ implementation(files("libs/oauth-5.9.1.aar"))} 이후에는 사용하는 라이브러리를 추가해주셔야 합니다.저 같은 경우 안 쓸 거 같은 라이브러리를 제외하다가, gradle 충돌이 많이 발생해서 제공..
Android 개발을 시작한 지 얼마 지나지 않았을 때 BaseActivity, BaseFragment를 생성하고, Activity와 Fragment가 이를 상속받는 코드의 형태를 봤었습니다. 그때 당시는 더 복잡하고, 보는 사람으로 하여금 혼동을 주는 코드라고 생각했지만, BaseActivity와 Fragment를 상속받음으로써 해결되는 다양한 장점들이 있었습니다. 왜? AppCompatActivity, Fragment가 아닌 BaseActivity, BaseFragment를 상속받는 것은 중복된 코드의 발생을 줄일 수 있습니다. 뭐 얼마나 코드의 중복이 발생하길래 복잡한 구조(BaseActivity와 BaseFragment)를 택하는걸까라고 생각하실 수 있습니다. class TestActivity :..
프로젝트에서 Network 연결 상태에 따라 API 동작 및 화면을 갱신해야 했습니다. 여러 가지 방법이 있지만, 저는 공식문서에 나와있는 ConnectivityManager를 통해서 해결했습니다. 네트워크 상태 읽기 | Connectivity | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 네트워크 상태 읽기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android에서는 앱이 연결의 동적 변 developer.android.com 설명하기 전 네트워크 사용을 위해선 안드로이드 매니페스트에 다음 권한을 포함해야 합니다. 해당 권한은 음악, 갤러리 접근과 달리 일반권한이기 때문에 런타임에 요청할 필요가 없습..
프로젝트를 하면서 Ui State와 Ui Event를 통해서 데이터에 대한 변화와 사용자 입력에 대한 변경사항을 UI에서 반영하도록 코드를 작성했습니다. 하지만 기존 코드의 문제점(?)과 제가 UI Layer에 대한 이해도와, Ui State, Ui Event 코드를 잘못이해한 거 같아서 UI layer에 대한 역할과 state, event에 대해서 공부해봤습니다 ㅎ 개인적으로 공부하고 적은 글이라는 점이라서 정확하지 않을 수 있어요 UI Layer 공식문서에서 권장하는 Clean Architecture중 하나의 영역입니다. UI 레이어에 대한 역할은 다음과 같습니다. 화면에 어플리케이션 데이터를 표시하고, 사용자 상호작용의 기본 지점으로의 역할을 수행하는 것 말이 조금은 딱딱한 감이 있는데, 쉽게 말하..
개요 프로젝트에서 코루틴을 많이 사용했지만, 코루틴에 대해서 정확하게 알지 못하고 기존 코드를 그대로 사용한 적이 많았다. 공식문서에서 비동기 작업으로 코루틴을 권장하고, 애플리케이션 특성상 비동기 작업이 중요한 만큼 한번 자세히 다룰 필요성이 있다고 느꼈다. 코루틴에 대해서 설명하기전에 비동기 작업이 왜 중요한지, 어떤 것인지 알고 넘어갈 필요성이 있다. 여기선 동시성과 병렬성이라는 단어의 차이를 알 필요성이 있다. 동시성 vs 병렬성 동시성 둘 이상의 작업이 동시에 실행되는것을 의미한다. 여기서 말하는 동시는 정확하게 같은 시간에 실행되는 것이 아닌 동시에 실행하는 것처럼 보인다는 의미이다. 예를 들어 N명의 사람이 하나의 큰 작업을 하는데, 동시에 작업을 하는것이 아닌 1명씩 돌아가면서 작업을 하는..
개요 Activity와 Fragment는 Android에서 화면을 구성하는 두 개의 클래스이다. 안드로이드 개발을 하면서 어떤 화면에선 Activity를 사용하고, 어떤 화면에선 Fragment를 사용하곤 하는데 각각의 특징을 통해서 화면을 구성하는데 Activity와 Fragment를 사용하는 기준을 공부하고자 한다. 그리고 공부한 것 내용을 토대로 개인적인 생각을 적은 글이라 너무 맹신하진 않았으면 좋겠습니다..ㅎ Activity 우선 Activity에 대해서 많은 사람들이 알고 있다고 생각합니다. Android의 4대 컴포넌트 중의 하나이며, 앱이 사용자와 상호작용을 하는 UI를 그리는 창을 제공해 줍니다. 흔히들 Android Studio에서 처음으로 프로젝트를 생성할 때 만들어지는 것이 Main..
Android 프로젝트를 한다면 가장 많이 사용하는 view가 RecyclerView가 아닐까.. 싶을 정도로 굉장히 많이 사용되는거 같습니다 이번 프로젝트를 하면서 어떻게 하면 아이템을 효과적으로 관리할 수 있을까에 대해서 고민해봤고, ListAdapter에 대해서 공부해 봤습니다. 제 목표는 위 사이드바에서 선택한 아이템에 대해서 UI적으로 변화를 주고 싶었습니다.ㅎㅎ ListAdapter RecyclerView에서 사용하는 Adapter는 RecyclerView.adapter 와 조금 더 확장된 개념인 ListAdapter가 있습니다. 간략하게 RecyclerView.adapter를 그냥 Adapter라고 부르겠습니다. Adapter와 ListAdapter의 차이점 아이템이 변화할 때 수동으로 변화..
리사이클러뷰를 이용해서 아이템마다 체크박스를 달아주고 아이템에 대한 체크박스 이벤트를 처리해야 했다. 아이템을 체크하고 스크롤을 내리다가 올라가면 원래 위치에 해당하는 체크박스에 대한 이벤트 처리가 사라진 것을 확인할 수 있었다. 왜??? 일정 스크롤 이상으로 움직이면 리사이클러뷰가 아이템을 재생성하기 때문이었다. 즉 viewHolder가 재활용돼서 생긴 문제라고 판단했다. 이미 Bind를 통해서 아이템을 생성했지만 스크롤을 위아래로 이동하면 아이템을 다시 배치하는 것을 확인할 수 있었다. 실제로는 아이템에 대해서 체크박스가 체크가 되어있지만 아이템을 다시 할당하면서 체크박스가 해제된 모습으로 보인 것이다. 해결 방안 해결하기 위해서 다양한 방법이 있지만, 데이터 클래스의 체크박스 상태를 저장할 변수를 ..
재한
'Skils/Android' 카테고리의 글 목록 (3 Page)