Android

코루틴이란?코루틴은 안드로이드에서 간단하게 비동기적으로 코드를 실행할 수 있는 동시성 디자인 패턴입니다.  동기와 비동기는 어떤 차이가 있을까요?? 동기 : 작업을 순차적으로 진행비동기: 순차적으로 작업을 진행하지 않고, 여러 작업을 동시에 진행하는 것. 코루틴 관련 개념들을 알아봅시다.코루틴 스코프 코루틴의 실행 범위를 정의하며, 코루틴의 생명 주기를 관리한다. 부모 자식 관계 구조에 따라서 스코프의 종료 및 취소가 전파된다. 코루틴은 스코프에 바인딩되며 부모 스코프가 종료나 취소가 된다면 자동으로 내부에 있는 모든 코루틴도 종료나 취소 처리가 된다. 코루틴 스코프 종류GlobalScope : 앱 생명주기와 함께한다.lifecycleScope : Activity나 Fragment가 활성 상태일 때만 코..
viewModel을 생성하는 방법은 크게 viewModel(), hiltViewModel()을 이용하는 2가지의 방법이 있다고 보여진다. 이 두개의 차이점이 궁금해졌고, 이 글에서는 이 두개의 방법에 대해서 알아보려 한다. viewModel()@Suppress("MissingJvmstatic")@Composablepublic inline fun viewModel( viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) { "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner" }, key: String? =..
LinkedOut이라는 사이드 프로젝트에 참여하게 되면서 기존 코드를 조금 수정해보려 한다.  기존 코드는 ViewModel에서 sharedPreference 세팅을 해주기 위해서 다음과 같이 뷰모델의 함수에 파라미터로 context를 넘겨주고 있다. private fun saveLocalTokens(context: Context, accessToken : String, refreshToken : String){ SharedPreferencesUtil.saveTokensInfo(context, accessToken, refreshToken) SharedPreferencesUtil.saveClickedAutoLogin(context, clickedAutoLogin)} ViewModel에서 직접..
Shared Element Transition최근 드로이드나이츠 2024에서 Compose SharedTransitionLayout라는 존재를 알게 되었습니다.Shared Element Transition Animation은 두 개의 다른 화면 사이에 공통으로 존재하는 요소가 매끄럽게 이동하거나 변형되는 것을 의미합니다.  이 글에서는 xml과 compose에서 각각 Shared Element Transition Animation을 구현해보려 합니다. xml우선 아무런 전환 효과를 주지 않은 화면을 살펴보겠습니다.  기본 화면 전환 애니메이션이 있지만 화면의 요소들이 매끄럽게 연결된다고는 보기 어려운 것 같습니다. 이제 Shared Element Transition Animation을 적용해보겠습니다. ..
최근 IT 동아리에서 Multi Module에 대해서 스터디를 진행했습니다. 기존의 소스 코드에 Multi Module을 적용시켜 보았고, 그 과정에서 다음과 같은 에러가 발생을 하였습니다. 에러를 확인해 보면 UserDto를 User 데이터로 캐스팅할 수 없다는 것이었는데요. UserDto 클래스로 받아온 데이터를 Mapper를 통해서 User 데이터로 변환 후 넘겨줘야 하는데 저는 as 연산자를 사용해서 리스트의 타입을 바꾸는 식으로 코드를 작성했습니다. 하지만 안에 들어있는 데이터 하나하나가 변환이 된 것은 아니었기 때문에 이러한 에러가 발생했다고 생각을 하였고, map 함수를 사용해서 새로운 리스트를 생성하는 방식으로 바꾸고 에러를 해결할 수 있었습니다. 아래는 제 기존 코드와 변경한 후의 코드입..
필요없는 import 정리 : [Ctrl] + [Alt] + O 코드 정리 : [Ctrl] + [Alt] + L 선언 보기 : [Ctrl] + B 현재 파일 닫기 : [Ctrl] + F4 검색 : [Ctrl] + F 줄 주석 : [Ctrl] + / 블록 주석 : [Ctrl] + [Shift] + / 불필요한 import 제거 : app -> 우클릭 -> Optimize imports / [Ctrl] + [Alt] + O 모든항목 검색 : [Shift] + [Shift] 다중 커서 : [Shift] + [Alt] + 커서 활성 탭 닫기 : [Ctrl] + F4 최근 파일 목록 : [Ctrl] + E 현재 창 닫기 : [Ctrl] + F4
Fragment Fragment는 FragmentActivity 내의 어떤 동작 또는 사용자 인터페이스의 일부를 나타냅니다. 쉽게 말하면 화면 분할을 가능하게 해주는 것이라고 할 수 있습니다. 여러 개의 프래그먼트를 하나의 액티비티에 결합하여 창이 여러 개인 UI를 빌드할 수 있으며, 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다. 자체적인 수명 주기를 가지고, 자체 입력 이벤트를 수신하고, 액티비티 실행 중에 추가 및 삭제가 가능합니다. 프래그먼트는 항상 액티비티 내에서 호스팅 되어야 하며 해당 프래그먼트의 수명 주기는 호스트 액티비티의 수명 주기에 직접적으로 영향을 받습니다. 프래그먼트를 액티비티 레이아웃에 추가하면, 해당 프래그먼트는 액티비티의 뷰 계층 내에서 ViewGroup에 들어가..
오늘은 안드로이드 jetpack에 대해서 간단히 알아보도록 하겠습니다! 1. Android Jetpack 소개 Android developers에는 Android Jetpack에 대해 다음과 같이 정의되어 있습니다. "Android Jetpack은 개발자가 관심 있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 제거, 모든 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음" Android Jetpack의 정의가 곧 Android Jetpack을 사용하는 이유라는 것을 알 수 있습니다. 2. Android Jetpack 분류 Android Jetpack은 크게 4가지로 분류할 수 있습니다. 1. Architecture : 구글에서 제안하는 안드로이드 아키텍처를 구현..
Be Honest..
'Android' 태그의 글 목록