일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 66챌린지
- Android ViewPager2
- MVP Architecture
- Android DataBinding
- 영어독립365
- OkHttp Interceptor
- 프로그래머스 알고리즘
- Kotlin FCM
- 습관만들기
- Android WebView
- Android
- 안드로이드
- 알고리즘 자바
- Android ProgressBar
- 안드로이드 카카오 로그인
- Android 12
- DataBinding
- WebView
- Android Interceptor
- Android Navigation
- Android Jetpack
- scope function
- 영어공부
- 카카오 알고리즘
- 안드로이드 fcm
- Java
- Android 12 대응
- android recyclerview
- 안드로이드 갤러리 접근
- Kotlin
- Today
- Total
목록안드로이드 (95)
나미래 Android 개발자
"ViewModel에서 viewModelScope를 쓰면 따로 cancel() 안 해도 된다고들 하죠. 그 이유, 정확히 알고 계신가요?"혹시 아직도 정확한 원리를 설명 못하겠다면, 이 글을 반드시 끝까지 읽어보세요. 안 읽고 지나가면 분명 손해입니다. Android에서 Kotlin Coroutines를 제대로 쓰기 위해 꼭 알아야 하는 개념 중 하나가 바로 "코루틴 취소"입니다. 특히 ViewModel이나 Activity 생명주기에 따라 적절한 시점에 코루틴을 종료하지 않으면, 앱은 곧 메모리 누수나 예외의 늪에 빠지게 됩니다. 이번 글에서는 Kotlin Coroutines: Deep Dive의 9장 "취소(Cancellation)" 내용을 Android 관점에서 재해석하고, 실전 코드에 어떻게 적용할..

launch를 launch 안에 또 썼는데… 이게 무슨 순서로 실행되는 거지? viewModelScope 안에서 launch를 썼는데 화면이 닫혀도 계속 돌아가는 이유가 뭘까? Android 개발자라면 한 번쯤은 겪어봤을 이 찜찜한 상황들. Kotlin Coroutines의 구조적 동시성 개념을 이해하지 못하면, 우리는 종종 이런 질문에 명확한 답을 내리지 못한 채 감에 의존한 코드를 짜게 됩니다.이번 글에서는 『Kotlin Coroutines Deep Dive』 8장 “잡과 자식 코루틴 기다리기”의 핵심 내용을 바탕으로, Job과 구조적 동시성의 본질을 파헤치고 Android 실전에서 안정성과 신뢰성을 확보하는 방법을 함께 정리해보려고 합니다. 구조적 동시성(Structured Concurren..

코틀린 코루틴을 쓰면서 CoroutineContext는 반드시 마주치는 개념이다. 하지만 공식 문서를 읽거나 튜토리얼을 보면, "Context에 여러 요소를 담는다"는 식의 설명만 있어서 막연하게 느껴지기 쉽다. 나 역시 그랬다. 그래서 이번 글에서는, Android 개발자 입장에서 실제로 살아 있는 지식이 될 수 있도록, CoroutineContext를 '완전히' 풀어 설명하려고 한다. CoroutineContext란 무엇인가?CoroutineContext를 쉽게 말하면, 코루틴이 실행될 때 필요한 환경 정보들을 모아놓은 곳이다.예를 들어,어떤 쓰레드(Dispatcher)에서 돌릴지어떤 작업 그룹(Job)에 속하는지예외가 발생하면 어떻게 처리할지(ExceptionHandler)디버깅을 위한 이름(N..
[Android] TabLayout Under Line 개요 TabLayout 하단 전체에 밑줄을 그리는 방법을 간단히 공유합니다. 배달의 민족 앱에서 하단 "찜"탭 화면에 진입하면 상단 탭에 회색 밑줄이 있는데 이를 비슷하게 구현했습니다. 예시: 배달의 민족 > 찜 결과 화면 Code rectangle_underline_gray.xml: TabLayout's Background activity_main.xml
Dynamic Link - 파이어베이스 프로젝트 셋팅 개요 프로젝트 셋팅이 귀찮을 수도 있겠지만, 제가 포스팅하던 날을 기준으로 셋팅하는 방법을 이미지 하나 하나 첨부해서 설명되어있으니 천천히 따라해주시면 금방 마무리 될 것입니다! 저도 처음에 귀찮아서 잘 정리되어 있는 블로그를 참고하여 하려고 여기저기 짧은 블로그를 찾아 다녔지만, 그냥 하나 잡고 잘 따라하면 되더라구요 :) 1. 파이어베이스 프로젝트 생성 in 파이어베이스 콘솔 Firebase Dynamic Link를 생성하고 사용하기 위해서는 [파이어베이스 콘솔]에서 프로젝트를 생성하고 Dynamic Link 관련된 셋팅과 어플리케이션의 프로젝트에 대한 세팅도 해주어야 합니다. [파이어베이스 콘솔]에 접속하면 위와 같은 화면을 볼 수 있습니다. 위..

WebView ProgressBar 구현 개요 ProgressBar ProgressBar는 사용자에게 작업 진행률을 나타내는 사용자 인터페이스 컨트롤이다. 예를 들면 인터넷에서 파일을 다운로드하거나 업로드 할 때, 우리는 ProgressBar을 통해서 작업 진행 상황을 파악할 수 있다. ProgressBar에 대한 자세한 내용은 다음을 참고하면 도움이 될 것이다. 안드로이드 프로그래스바 안드로이드 원형 프로그래스바 in Kotlin 안드로이드 프로그레스바란 Android ProgressBar in Kotlin ProgressBar는 사용자에게 작업 진행률을 나타내는 사용자 인터페이스 컨트롤이다. 예를 들면 인터넷에서 devgeek.tistory.com 안드로이드 원형 프로그레스바 in Kotlin 안드로..
[Android] Facebook 로그인(1) 셋팅 in Kotlin 1. 페이스북 앱 만들기 페이스북 로그인을 구현하기 위해서는 Meta for Developers페이지에서 개발자 계정으로 페이스북 앱을 만들어야 한다. 페이스북 앱 만들기 과정은 간단하니 아래 과정을 천천히 따라하면 된다. 1. 앱 만들기 Meta for Developers에 접속하여 먼저 로그인을 한다. 그리고 아래 이미지에서와 같이 오른쪽 상단 [내 앱]으로 접속한다. 그러면 다음 이미지처럼 내 앱의 목록과 [앱 만들기] 버튼을 확인할 수 있다. 기존에 만든 앱을 사용할 수 있지만, 새로운 앱을 만들어 사용하도록 한다. [앱 만들기] 버튼을 클릭한다. 2. 앱 유형 입력 아래와 같은 앱 유형 선택 화면에서는 페이스북 로그인을 위한 ..

WebView 이미지 업로드 WebChromeClient WebCrhomeClient는 웹 페이지에서 일어나는 액션들에 대한 콜백함수들로 구성되어 있다. 예를 들면 웹에서 새 창을 띄우려거나 파일을 첨부하는 경우가 있다. webView.webViewClient = WebViewClient() WebchromeClient.onShowFileChooser() webView.webChromeClient = object : WebChromeClient() { override fun onShowFileChooser(webView: WebView?, filePathCallback: ValueCallback?, fileChooserParams: FileChooserParams?): Boolean { this@Main..