Android
-
[Android] Thread (feat. 스레드란?)IT Study/Android 2024. 1. 24. 14:56
안녕하세요. 이번 글에서는 Thread(스레드)에 대해 다뤄보고자 합니다. 바로 함께 보시죠. ✅ Thread (스레드) 개념이 필요한 이유 유튜브를 예시로 들어보겠습니다. 유튜브에서 영상을 보던 도중, 영상이 마음에 들어 오프라인 저장을 하려고 합니다. 그러나 작업 공간이 단일하게 존재할 경우(Main Thread), 영상 시청과 함께 오프라인 저장을 할 수 없습니다. 이러한 경우 또 다른 작업을 수행할 수 있는 스레드가 필요할 것입니다. 주요한 작업 외에 또 다른 주요 작업을 수행하기 위해 만든 작업 공간, Worker Thread가 필요합니다. 🛰️ Thread (스레드, 작업 공간) 애플리케이션이 시작되면 시스템은 애플리케이션에 대한 실행 스레드를 생성하며, 이를 기본이라고 합니다. (안드로이드 ..
-
[Android] View 그려지는 과정 (뷰가 그려지는 순서)IT Study/Android 2024. 1. 20. 16:08
안녕하세요. 이번 글에서는 View가 그려지는 과정에 대해 다뤄보려고 합니다. 안드로이드에서 View는 전위순회 (부모 → 자식 순으로, 위 → 아래, 왼쪽 → 오른쪽) 방식으로 그려집니다. 이렇게 전위순회 방식으로 그려지는 View는 depth가 깊어질수록 확인해야 할 내용이 많아지므로 안드로이드는 flat한 구조로 작성하는 것이 좋습니다. View가 그려지는 순서를 보도록 하겠습니다. 1. measure 모든 뷰는 자신의 width, height (크기)를 계산합니다. measure(측정) 과정에서는 부모 - 자식 간의 뷰 크기에 대한 정보를 전달하기 위해 2가지 클래스를 사용하는데요. ViewGroup.LayoutParams 자식 View가 부모 View에 알리는 내용 (자신이 어떻게 측정되고, ..
-
[Android] 액티비티의 라이프 사이클 (생명주기, Life cycle)IT Study/Android 2024. 1. 20. 14:47
안녕하세요. 이번 블로그 글에서는 Android 개발 시 주로 사용되는 Activity의 생명주기에 대해 알아보도록 하겠습니다. 먼저, Activity의 Life Cycle을 확인하기 위해 아래와 같은 테스트 시나리오를 작성하였습니다. 📊 테스트 시나리오 1. Activity 실행, 종료 시의 Life cycle 2. 다른 App 실행 시 (= 홈 버튼 클릭 시)의 Life cycle 3. 다른 Activity 실행 시의 Life cycle 또한 Activity의 Life Cycle을 확인하기 위해 아래와 같은 테스트 코드를 작성하였습니다. MainActivity.kt package fastcampus.part0.kotlin import android.content.Intent import android..
-
[백준 알고리즘/Kotlin] 1789번 수들의 합IT Study/백준 알고리즘 2023. 12. 21. 16:56
바로 문제로 들어가기 전에... Int, Long 범위보고 가실게요~ 1. Int와 Long의 범위 1. Int 범위 크기 : 32 bit 범위 : - 2³¹ ~ 2³¹ -1 (- 2,147,483,648 ~ 2,147,483,647, 약 -21억 ~ 21억) 2. Long 범위 크기 : 64bit 범위 -2⁶³ ~ 2⁶³ - 1 (약 -9경 ~ 9경) 대부분의 코드에서는 Int를 사용해도 충분했기에 Int를 사용했지만, 문제에 주어진 입력 조건을 확인해보니, Long을 사용해야겠습니다. 2. 최종 코드 n * (n + 1) / 2 연속되는 자연수의 합 공식을 사용하여 풀이했습니다. 연속되는 수의 곱을 찾기 위해 루트를 사용했는데요, 루트를 이용하면 두 수의 곱에 가장 가까운 값을 빠르게 찾을 수 있을 ..
-
[백준 알고리즘/Kotlin] 1931번 회의실 배정 (feat. 입력 받기 이젠 정복한 듯...?)IT Study/백준 알고리즘 2023. 12. 21. 15:07
1. 입력 받기 첫 줄에는 하나의 값 n을 받고, 둘째 줄부터 n+1 줄까지 공백을 사이에 둔 2개의 정수 받기 import java.io.BufferedReader import java.io.InputStreamReader fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val n = br.readLine().toInt() val meetings = mutableListOf() repeat(n) { val (start, end) = br.readLine.split(" ").map { it.toInt() } meetings.add(start to end) } br.close() } 코드를 자세히 살펴보겠습니다. 1. mutable..
-
[Project/Android] `OutOfMemoryError` 오류 해결하기Daily/Project 2023. 12. 19. 15:52
1. Physical 안드로이드 기기 테스트 중 오류 안드로이드 스튜디오에서 제공하는 Virtual(가상) 안드로이드 기기가 아닌, Physical(실제) 안드로이드 기기에서 테스트하던 중 다음과 같은 에러가 발생하였습니다. java.lang.OutOfMemoryError: Failed to allocate a 23425512 byte allocation with 16766392 free bytes and 21MB until OOM 주목해야 할 단락은 위 메시지입니다. 해당 오류 메시지에서는 23,425,512 바이트를 할당하려고 했지만, 현재 사용 가능한 메모리가 16,766,392 바이트 밖에 남아있지 않다는 것을 나타냅니다. 이에 따라 시스템은 OutOfMemoryError를 발생시켰습니다. 2. ..
-
[Project/Android] GameActivity 만들기 (Feat. 조이스틱 만들기)Daily/Project 2023. 12. 14. 00:27
위와 같이 게임 필드에서는 아래와 같은 로직들이 필요했습니다. 1. 조이스틱을 통해 캐릭터를 움직이고 2. 상하좌우 방향에 맞추어 걷는 듯한 모션을 위해 캐릭터의 모습을 바꿔줘야 한다는 것 3. 정지했을 때에는 정지한 default 모습을 보여야 한다는 것 4. 몬스터와 만났을 때, GameDetailActivity라는 다른 액티비티로 전환됨과 동시에 보유하고 있던 티켓을 사용해야 한다는 것 5. 코인을 먹었을 때에는 코인의 수가 올라가야 한다는 것 이번 블로그 글에서는 조이스틱을 다뤄보도록 하겠습니다. 조이스틱 만들기 안드로이드에서 조이스틱을 만든 다른 사례가 있는지 확인하기 위해 구글 검색을 시작했습니다. 찾고 찾던 와중, 아래와 같은 블로그 글을 발견했죠. 정말 ... monotics님의 블로그 글..
-
[Android/Kotlin] 앨범, 주사위, 명언 앱 만들어보기 (Feat. GitHub)IT Study/Android 2023. 11. 10. 16:00
안녕하세요! 이번 블로그 글에서는 제가 현재 제작 중인 앱에 대한 내용을 공유해보려고 합니다. 이번에는 기존에 정리하던 블로그 대신 깃허브에 주로 내용을 정리하고 있어서, 해당 앱의 개발 내용과 코드를 더 상세하게 확인하실 수 있습니다. 아래 링크를 통해 깃허브 저장소로 이동하셔서 프로젝트의 진행 상황을 확인해보세요. 혹시나 피드백이나 협업에 관심이 있으신 분들은 언제든지 연락 주세요... (ㅎㅎ) 더보기 three email : 1soelkim@gmail.com 1. BTS 앨범 앱 GitHub - 1three/kotlin-album-bts: [Kotlin] BTS 사진을 볼 수 있는 `안드로이드` 앨범 앱 [Kotlin] BTS 사진을 볼 수 있는 `안드로이드` 앨범 앱. Contribute to 1..