[코틀린(Kotlin)] 뷰 모델 (ViewModel)

1. 뷰 모델이란? Activity와 Fragment와 같은 UI 컨트롤러의 로직에서 데이터를 다루는 로직을 분리하기 위해서 등장한 Android JetPack 라이브러리. 2. 뷰 모델의 필요성 안드로이드는 Activity와 Fragment 같은 UI 컨트롤러에서 리소스의 제거와 복구가 수행된다. 예시로, 화면 전환(가로/세로)이 이루어질 때 Activity가 onDestroy 된 다음, 다시 화면이 onCreate → onStart가 되기 때문에 특정 데이터들이 날아갈 수 있다. 이는 생명주기와 관련 있는데, class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCrea..

TIL 2024.02.05 1
[코틀린(Kotlin)] API Key 숨기기

API Key를 이용하여 카카오 API를 받아 이미지 검색을 하는 개인과제를 진행 중에, 이걸 제출할 때 깃허브에 올릴 텐데, API Key가 노출된 채로 올려도 되나?라는 생각이 들었다. 그래서 API Key를 숨기는 방법을 검색해서 알아봤다 우선, 대략적인 순서는 아래와 같다 local.properties 파일에 값 저장 build.gradle.kts(:app) 수정 프로젝트 빌드 BuildConfig로 호출 1. local.properties 파일에 값을 저장 // local.properties sdk.dir = sdk 경로 API_KEY = "API_Key 값" local.properties 파일을 열고 sdk 경로 밑에 사용할 API Key값을 정의한다 local.properties는 기본적으로..

TIL 2024.02.02 0
[코틀린(Kotlin)] 디버깅(Debugging)

1. 디버깅이란? 디버깅은 모든 소프트웨어에서 소스 코드의 오류 또는 버그를 찾아서 수정하는 과정이다 소프트웨어가 예상대로 작동하지 않으면 프로그래머는 오류가 일어나는 원인을 알아내기 위해 코드를 분석한다 디버깅 도구를 사용해 소프트웨어를 제어된 환경에서 실행하고 코드를 단계별로 확인하여 문제를 분석하고 수정한다 2. 디버깅의 중요성 앱 개발 시간 단축 - 초기 단계의 에러 발견으로 이후 시간 절약 - 코드 흐름과 동작 방식 파악으로 유사 오류 빠르게 대응 - 복잡한 문제를 단계별로 분해하여 효과적 관리 품질 향상 및 사용자 경험 개선 - 앱 안정성 증대로 사용자 신뢰 향상 - 오류 감소로 사용자 경험 개선 - 문제 원인 미리 파악으로 유지보수 용이성 향상 개발자의 성장 - 다양한 문제 대처 능력 향상 ..

TIL 2024.02.01 0
[코틀린(Kotlin)] CLEARTEXT communication to XXXX not permitted by network security policy

강의를 보며 미세먼지 앱을 만들다가 겪은 에러 "CLEARTEXT communication to XXXX not permitted by network security policy" 발생하는 이유는 따라 치던 코드의 API 주소, 이미지주소 등 네트워크 경로가 https가 아닌 http로 되어 있기 때문이다. 안드로이드 9.0 파이부터는 https를 사용하도록 강제한다고 한다 [참고 사이트]

TIL 2024.01.31 0
[코틀린(Kotlin)] 미세먼지 앱 만들어보기

특정 지역의 미세 먼지 수치, 등급을 알려주도록 한다. 데이터는 공공데이터포털을 이용한다. 수신된 JSON 데이터를 가공한다. 미세먼지 등급에 따라 아이콘/배경색을 변경한다. 공공데이터 포털 접속 후 환국환경공단_에어코리아_대기오염정보의 API 활용 그 중에서, 시도별 실시간 측정정보 조회을 활용 미세먼지 등급에 따라 나뉘는 아이콘 및 배경색의 기준 Gradle에 라이브러리 추가 plugins { ... id("kotlin-kapt") } ... buildFeatures { viewBinding = true dataBinding = true buildConfig = true } dependencies { ... implementation("com.google.code.gson:gson:2.10.1") i..

해보기 2024.01.30 0