분류 전체보기
-
[Android_MVVM_CleanArchitecture] 1. Data Layer오픈소스 공부/Android_MVVM_CleanArchitecture 2024. 11. 21. 11:29
클린 아키텍처를 학습하면서 MVVM에 대한 학습을 했지만 실제로 어떻게 적용해야 할지 모르겠어서 Github 여행을 하려고 한다. 첫 시작은 Android_MVVM_CleanArchitecture 이름의 프로젝트이다.https://github.com/Gun-HelloWorld/Android_MVVM_CleanArchitecture GitHub - Gun-HelloWorld/Android_MVVM_CleanArchitecture: Android MVVM Clean ArchitectureAndroid MVVM Clean Architecture. Contribute to Gun-HelloWorld/Android_MVVM_CleanArchitecture development by creating an acco..
-
QUERY_ALL_PACKAGES 권한회사 생활/기타 지식들 2024. 11. 19. 10:58
회사에서 다른 회사 솔루션인 백신 SDK를 설치하는 업무를 할당 받았다. 백신 SDK는 다른 앱들의 정보를 얻어서 문제가 있는지 아닌지를 확인하기 때문에 다른 앱의 정보가 필요하다. 다른 앱의 정보를 얻는 방법은 2가지 정도인 것 같다. In App 방식 (QUERY_ALL_PACKAGES 권한 추가) App to App 방식 (Manifest.xml에 queries 태그 추가)In App 방식은 구글에서 제시하는 이유에 포함되어야 하고 그 이유를 출시하면서 설명하고 통과해야 사용가능하다. 대신 설치된 모든 앱의 정보를 획득할 수 있다. App to App 방식은 그냥 사용가능 하지만 앱의 정보를 얻는데 제한이 있다. 플레이 스토어의 허가 범위를 통과한다면 In App 방식이 좋다고 생각하지만 통과..
-
안드로이드 코루틴 (Coroutine Builder) 코드안드로이드 학습/Android 기술면접 대비 2024. 11. 18. 13:16
Coroutine Builder에는 주로 4가지가 있다. 1. launch 사용 목적: 결과를 반환하지 않고 코루틴을 실행.특징:반환값이 없는 Job 객체를 반환함.주로 fire-and-forget 작업(결과보다는 실행 자체가 중요한 작업)에 적합.예외가 발생해도 기본적으로 상위 코루틴에 전달됨.private fun coroutineLaunch() { val sb = StringBuilder() runBlocking { setStringWithStringBuilder(sb, "1. Thread Name : ${Thread.currentThread().name}", resultTextView) val result = launch { setStringW..
-
(DI - 1편) 의존성 주입이란안드로이드 학습/Android 기술면접 대비 2024. 11. 16. 12:58
의존성 학습 시리즈 3편 : (DI - 1편) 의존성 주입이란(DI - 2편) 안드로이드 의존성 수동 주입(DI - 3편) DI 라이브러리 Hilt https://developer.android.com/training/dependency-injection?hl=ko Android의 종속 항목 삽입 | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. Android의 종속 항목 삽입 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 종속 항목 삽입(DI)은 프로그래developer.android.com 안드로이드에서 아키텍처를 학습을 하다 보니 자주 보는 것이 DI(Dependency Injection)였다.Depen..
-
(DI - 3편) DI 라이브러리 Hilt Annotations안드로이드 학습/Android 기술면접 대비 2024. 11. 16. 12:55
의존성 학습 시리즈 3편 : (DI - 1편) 의존성 주입이란(DI - 2편) 안드로이드 의존성 수동 주입(DI - 3편) DI 라이브러리 Hilt 코틀린을 수동으로 주입시켜줄수도 있지만 굳이 이런 과정 필요없이 더 간단하게 하는 방법은 제공되는 라이브러리를 사용하는 것이다. Hilt :Google의 Dagger를 기반으로 하여 만든 의존성 주입 라이브러리로 안드로이드에 특화된 라이브러리Dagger2 : Java/kotlin을 위한 의존성 주입 프레임 워크이다. 컴파일 단계에서 의존성을 주입Koin : 순수 kotlin으로 작성된 의존성 주입 프레임 워크이다. dagger2와 달리 런타임때 의존성을 주입우선 안드로이드에서는 Hilt를 사용하는 것을 추천하기 대문에 Hilt를 먼저 학습하고 나중에 Koin..
-
(DI - 2편) 안드로이드 의존성 수동 주입안드로이드 학습/Android 기술면접 대비 2024. 11. 16. 12:53
(DI - 1편) 의존성 주입이란(DI - 2편) 안드로이드 의존성 수동 주입(DI - 3편) DI 라이브러리 Hilt 구글에서는 권장하는 아키텍처를 통해 프로젝트를 만들때 관심사를 분리하기를 권장한다. 관심사 분리를 통해 각 클래스가 정의된 하나의 책임을 갖게 하는 것을 권장하는 것 같다. 이렇게 하면 더 많은 작은 클래스와 연결하여 서로의 종속성을 충족해야 한다. 의존성 주입을 사용하면 클래스를 쉽게 연결할 수 있고 테스트를 위해 구현을 교체할 수 있다. 예를 들어 Repository에 종속된 ViewModel을 테스트 할때 가짜 또는 모의 구현과 함께 Repository의 다른 구현을 전달하여 다른 case를 테스트 할 수 있다. 이번 글에서는 수동 의존성 주입을 학습해보려고 한다. 이 접..
-
안드로이드 코루틴 Scope안드로이드 학습/Android 기술면접 대비 2024. 11. 15. 17:43
코루틴 스코프 (Coroutine Scope)란 ?코루틴은 코루틴 스코프 안에서만 동작한다. 각 스코프는 특정 생명 주기를 가지며, 코루틴 실행을 위한 컨텍스트를 제공합니다. 코루틴 스코프를 사용하기 위해서는 미리 정의된 코루틴 스코프를 사용하거나 직접 생성하는 방법이 있다. 코루틴 스코프 종류 : CoroutineScope, viewModelScope, lifecycleScope, GlobalScope 등등1. CoroutineScope특징 : 명시적으로 정의한 스코프. 일반적으로 Job이나 Dispatchers를 사용하여 컨텍스트를 설정. 부모-자식 관계를 설정할 수 있어 구조화된 동시성을 지원. Dispatcher 종류 : Main : 메인 스레드, 화면 ui 작업 등을 하는 곳IO : 네트워..
-
안드로이드 코루틴 (Coroutine)안드로이드 학습/Android 기술면접 대비 2024. 11. 8. 18:27
안드로이드에서 비동기 작업을 하면 주로 다양한 라이브러리와 방법이 있겠지만 주로 3가지 방식을 사용하는 것 같다. Thread 생성 RxJavaCoroutine (코루틴)나는 앞서 RxJava나 Thread는 학습했고 이번에는 코루틴 차례이다. 내가 학습했던 많은 안드로이드 예제 프로젝트에는 네트워크 통신 같은 것들은 거의 코루틴을 사용했었고 코루틴만의 장점이 다른 것보다 크기 때문에 그런것이라고 생각한다. 그래서 코루틴에 대해서 알아보고 다른 RxJava나 Thread와 비교해 보려고 한다. 1. 코루틴이란?코루틴은 일종의 가벼운 스레드(Light-weight thread)로 Kotlin 언어에서 비동기 작업 지원하는 라이브러리다. 코루틴은 코틀린 언어에서 제공되기 때문에 안드로이드를 Kotlin으..
-
안드로이드 비동기 처리 2-4 (실시간 검색 with EditText)안드로이드 학습/Android 기술면접 대비 코드 2024. 11. 1. 11:03
이전 내용까지 Rxjava가 무엇인지와 기초적으로 사용하는 것을 알아봤다. 과연 실제로는 어떻게 활용될지가 궁금했다. 그래서 찾아보니 아래와 같은 상황에 사용 가능하다. UI 이벤트 처리 (실시간 검색, 버튼 클릭)네트워크 통신데이터베이스 그 외에 비동기 방식들RxBinding 라이브러리를 사용하면 Button 클릭이나 EditText 텍스트 변경과 같은 UI 이벤트를 Observable로 만들어 이벤트 기반의 데이터 흐름을 처리할 수 있다. 그래서 이번에는 RxBinding을 활용해서 실시간 검색하는 방법을 먼저 학습하려 한다. 실시간 검색은 EditText의 텍스트 변화를 구독하여 실시간 text 변화를 인식해서 검색 기능을 구현할 수 있다. 1. build.gradleimplementation(..
-
안드로이드 비동기 처리 2-5 (네트워크 통신 - retrofit)안드로이드 학습/Android 기술면접 대비 코드 2024. 11. 1. 10:48
안드로이드에서 앞서 RxJava를 학습했던 것들은 UI 처리나 기타 비동기가 사용되야 하는 곳 등등을 학습했다.UI 이벤트 처리 (실시간 검색, 버튼 클릭)네트워크 통신데이터베이스 그 외에 비동기 방식들이번에는 Retrofit과 함께 네트워크 통신을 하는 방법을 학습하려고 한다. 사용한 앱 스택 :RxJava & RetrofitHiltdatabindingViewModel적용된 아키텍처 : Three Layer Architecture 참고 :(1) developer 사이트 : 링크(2) 3Layer 예제 : https://github.com/tdcolvin/PlanetSpotters 1. build.gradle(app)먼저 Rx와 Retrofit 그리고 Hilt 라이브러리를 추가해야 한다. plugin..