Android
-
Android Kotlin Fundamentals - ViewModel(1)Android 2021. 5. 29. 13:49
Android Kotlin Fundamentals: 5.1 ViewModel 을 요약, 정리하였다. (자세한 내용은 codeLab 사이트를 참고) GameViewModel 구현 build.gradle(module:app) 파일에 다음 dependencies를 추가한다. (최신 버전은 문서를 참고) dependencies { // implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' // implementation 'androidx.fragment:fragment-ktx:1.3.4' } ViewModel 클래스를 상속하는 GameViewModel을 정의한다. class GameViewModel:ViewModel() { override fun ..
-
ViewModelAndroid 2021. 5. 28. 13:27
ViewModel 클래스는 lifecycle를 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었다. ViewModel 클래스를 사용하면 화면 회전과 같이 구성을 변경할 때도 데이터를 유지할 수 있다. ViewModel 생명주기 ViewModel은 Activity에서는 Activity가 끝날 때까지 그리고 Fragment에서는 Fragment가 분리될 때까지 메모리에 남아 있다. Activity의 경우 기기 화면이 회전될 때와 같이 onCreate() 메서드가 여러 번 호출될 수 있지만 ViewModel은 소멸되지 않고 계속 유지된다. ViewModel은 ScopeOwner가 Destroyed 상태가 되면 onCleared()를 호출하여 ViewModel을 Release한다. ViewModel 구현..
-
Navigation Component(2)Android 2021. 5. 19. 19:37
대상(Destinations) 이동 대상(Destinations)으로 이동하는 것은 NavController 객체를 사용하여 실행되며 NavController는 NavHost내에서 앱 탐색을 관리한다. Fragment, Activity 또는 View의 NavController를 가져오려면 다음 메서드 중 하나를 사용한다. (Kotlin기준) Fragment.findNavController() View.findNavController() Activity.findNavController(viewId: Int) ID를 사용한 이동 navigate(int) 는 Action 또는 대상(Destinations)의 리소스 ID를 사용합니다. 버튼의 경우는 Navigation 클래스의 createNavigateOnCl..
-
Navigation Component(1)Android 2021. 5. 18. 16:02
Android Jetpack의 Navigation Componet는 단순한 버튼 클릭부터 좀 더 복잡한 패턴(앱바, 탐색 창)에 이르기까지 여러 가지 탐색을 구현하도록 도와준다. 1. Navigation Component 장점 fragment transactions 자동 처리 올바른 up, back 처리 animations 및 transactions에 표준화된 리소스 제공 딥 링크 구현 및 처리 추가 작업 없이 탐색 UI 패턴(예: 탐색창, 하단 탐색 메뉴) 구현 Safe Args Android Studio에서 앱의 탐색 흐름을 시각화하고 수정 가능 2. Navigation 구성요소 Navigation graph 사용자가 앱에서 선택할 수 있는 가능한 모든 경로를 정의하는 XML Resource이다. 지..
-
SurfaceViewAndroid 2021. 5. 13. 17:39
1. Surfaceview 개념 Android Application에서 View가 그려지는 작업은 메인 스레드(Main Thread)에서 실행되지만 동영상이나 Camera Preview와 같이 그려지는 양이 많거나 빠른 화면 변화를 원한다면 SurfaceView를 사용해야 한다. SurfaceView의 내용은 Main Thread가 아닌 다른 Thread를 통해서 그려지기 때문이다. SurfaceView는 아래의 그림과 같이 Window의 아래쪽에 위치, Window를 뚫어서(punched) 자신이 보여지게끔 한다. 만일 해당 Window위에 다른 View가 있는 경우는 블렌딩(Blended)이 되어 보여지게 된다. 사실 안드로이드 운영체제의 정책상 여러 스레드가 같은 자원에 동시에 접근했을 때 일어나는..
-
ADB Shell 명령어 정리Android 2021. 4. 25. 10:18
Android Debug Bridge(ADB)는 기기와 통신할 수 있는 다목적 명령줄 도구로 Android SDK Flatform 도구 패키지에 포함되어 있다. - 기기 내부저장소 접근 adb shell cd /data/data/[package name]/ - 기기 재시작 adb shell reboot - 연결된 기기 목록 확인 adb devices - adb server 시작 adb start-server - adb server 종료 adb kill-server - 특정 기기로 명령어 전송 adb -s [devices] 명령어 - wi-fi를 통해 기기에 연결(Android 10이하) adb connect device_ip_address - 기기에 파일 복사 adb push [local] [remote..
-
Android Gradle - Build Type, FlavorAndroid 2021. 4. 24. 18:38
android { ... buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } flavorDimensions "version" productFlavors { free { dimension "version" manifestPlaceholders = [ appLabel: "Free-Flavor" ] applicationIdSuffix ".free" versionCode 10000 versionName "1.0.0" buildConfigField "String", "EXPLAIN", "\"This is FREE-FLAVOR appli..
-
Android Gradle - Gradle Scripts(2)Android 2021. 4. 24. 13:35
모듈 build.gradle apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion '30' defaultConfig { applicationId "test.com.mvpexample" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCod..