안드로이드
-
[Android] Compose State 관리 - 2안드로이드 2021. 8. 2. 17:45
개요 Compose State 관리를 이전 포스팅에 이어 정리해보자. (안드로이드 개발자 사이트 참고) 2021.08.02 - [안드로이드] - [Android] Compose State 관리 - 1 [Android] Compose State 관리 - 1 State와 Composition Compose는 선언적이므로 Compose를 업데이트하는 유일한 방법은 새 파라메터로 동일한 Composable을 호출하는 것이다. 이 파라메터는 UI 상태를 나타난다. 상태가 업데이트될때마다 재 growup-lee.tistory.com ViewModel 과 State ViewModel은 UI 트리 위에 있는 Composable이나 Navigation 라이브러리의 도착지에 있는 Composable을 위해 권장하는 Sta..
-
[Android] Compose State 관리 - 1안드로이드 2021. 8. 2. 14:31
State와 Composition Compose는 선언적이므로 Compose를 업데이트하는 유일한 방법은 새 파라메터로 동일한 Composable을 호출하는 것이다. 이 파라메터는 UI 상태를 나타난다. 상태가 업데이트될때마다 재구성이 실행된다. 따라서 TextField와 같은 항목은 명령형 XML 기반 뷰에서 처럼 자동으로 업데이트 되지 않는다. Composable이 새 상태에 따라 업데이트되면서 새 상태를 명시적으로 알려줘야 한다. @Composable fun HelloContent() { Column(modifier = Modifier.padding(16.dp)) { Text( text = "Hello!", modifier = Modifier.padding(bottom = 8.dp), style =..
-
[Android] Compose 이해하기안드로이드 2021. 7. 30. 14:28
Compose란 Jetpack Compose는 Android를 위한 선언형 UI 도구 Kit이다. 앱 UI를 선언형 API를 제공하여 더 쉽게 작성하고 유지관리할 수 있도록 지원한다. 선언형 프로그래밍 패러다임 지금까지 Android의 뷰 계층구조는 UI 위젯의 트리로 표시할 수 있었다. 앱의 상태가 변경되어 현재 데이터를 변경하려면 findViewById()와 같은 함수로 트리를 탐색하고 setText, addChild, setImageBitmap등의 메소드를 호출하여 노드를 변경했다. View는 수동으로 조작하면 오류가 발생할 가능성이 높아진다. 데이터를 여러 위치에서 렌더링한다면 데이터를 표시하는 뷰 중 하나를 업데이트하는 것을 잊기 쉽다. 또 여러 뷰의 상태를 변경하다 보면 예기치 않은 crash..
-
안드로이드 ViewModel (Android Developer 설명 참고)안드로이드 2021. 7. 27. 15:01
개요 ViewModel은 UI컨트롤러와 데이터를 분리하여 화면 회전과 같이 구성이 변경할때도 데이터가 유지되도록 설계되었다. UI컨트롤러에서 데이터를 관리하게 되어있었는데 그렇게 되면 UI구성이 변경되면(화면 회면과 같은 동작) UI컨트롤러가 제거됐다가 다시 생성된다. 그렇게 되면 UI컨트롤러에 저장된 일시적인 UI 관련 데이터가 삭제된다. 이럴 경우 onSavedInstanceState() Method를 사용해서 onCreate()에서 데이터를 복원할 수 있다. 그런데 비트맵이나 리스트 데이터와 같은 대용량의 데이터에는 부적합하다. 그리고 비동기 호출 처리를 해야한다면, 비동기 호출이 자주 발생하게 되어 이미 수행된 호출을 다시 호출해야하므로 리소스가 낭비된다. 그래서 ViewModel을 통해 UI컨트..
-
안드로이드 WebView API Level 30에서 Deprecated 된 내용안드로이드 2021. 7. 26. 13:39
개요 안드로이드에서 API Level 30부터 Deprecated된 함수들이 있다. 어떤 Method들이 Deprecated 됐는지 알아보자. Deprecated 된 Method setAllowFileAccessFromFileURLs Deprecated setAllowUniversalAccessFromFileURLs Deprecated setAppCacheEnabled Deprecated setAppCachePath Deprecated Deprecated 된 Method 설명 및 처리 방법 setAllowFileAccessFromFileURLs 설명 : 다른 file:// URL로 접근을 허용할지 여부를 설정한다. Depreacted 처리 방법 : androidx.webkit.WebViewAssetLoa..
-
[WebView] setAppCacheEnabled Deprecated안드로이드 2021. 7. 26. 11:35
AppCache 지원 종료 AppCache가 Chrome 85버전부터 지원되지 않아 새 버전의 Chromium 기반의 브라우저에서 AppCache를 사용할 수 없게되었다. 안드로이드 WebView도 Chromium기반이기 때문에 AppCache관련 API가 API Level 30부터 Deprecated됐다. 기존에 설정된 AppCache 설정은 신규 버전의 Chromium에서는 동작하지 않는다. AppCache를 사용하고 있다면 ServiceWorker를 사용하도록 마이그레이션 할 수 있다. 마이그래이션 ServiceWorker로 Migration하는 것은 아래의 페이지를 참조하면된다. https://web.dev/appcache-removal/#migration-strategies Preparing f..
-
Hilt를 이용한 Dependency Injection(DI) - 2안드로이드 2021. 7. 8. 16:59
Android 클래스용으로 생성된 구성요소 @InstallIn에 사용하는 Component로 [안드로이드] - Hilt를 이용한 Dependency Injection(DI) - 1 포스팅에서 ActivityComponent를 사용하는 예제코드를 작성했다. Component에 대한 설명은 아래와 같다. Component 대상 및 기간 Hilt Component 인젝터 대상 생성 위치 제거 위치 ApplicationComponent Application Application#onCreate() Application#onDestroy() ActivityRetainedComponent ViewModel Activity#onCreate() Activity#onDestroy() ActivityComponent Ac..
-
Hilt를 이용한 Dependency Injection(DI) - 1안드로이드 2021. 7. 8. 15:41
Hilt 란 Hilt는 Android Dependency Injection 라이브러리이다. Android 클래스마다 Container를 제공하고 생명주기를 자동으로 관리함으로써 애플리케이션에서 DI를 사용하는 표준 방법을 제공한다. Dagger를 기반으로 제작되었다. Gradle 추가 루트의 build.gradle에 플러그인을 추가한다. buildscript { ... dependencies { ... classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha' } } app/build.gradle에 아래 종속 항목을 추가한다. ... apply plugin: 'kotlin-kapt' apply plugin: 'dagger.hilt.androi..