일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 안드로이드 sms
- var 와 val
- 모의위치 주입
- 코틀린 트리거 버튼
- json 저장
- 코틀린 이미지저장 #파일저장
- TwomonUSB
- apk이름변경
- Room 데이터베이스 업데이트
- 라이브데이터 postValue
- 스레드 #코루틴
- 안드로이드스튜디오 jdk
- 커스텀스피너
- 안드로이드 비콘
- compse collectAsState
- 1회용 플라스틱컵
- 셀룰로오스-g-폴리락타이드 공중합체
- 코루틴스코프
- TowmonUSB 연결오류
- bluetoothmanager
- 코루틴 job
- viewmodelscope
- 토글 험수
- 안드로이드 스튜디오 애뮬레이터
- 플라스틱 생분해
- 안드로이드 mvvm
- compse state
- 비콘스캐닝
- withContext
- #큐구조 #큐다운로드
- Today
- Total
목록분류 전체보기 (53)
EnjoyLife
아래 블로그를 참고하면 됩니다. 이보다 더 자세한 설명은 없더라구요. https://mparchive.tistory.com/176 [안드로이드] Room 데이터베이스의 테이블 등을 업데이트 할 시, Migration 옵션을 필히 집어넣자. 기존 프로젝트의 로컬 DB 테이블에 컬럼을 삽입해야하는 요구사항이 생겼는데, 이를 진행하면서 필수적이었던 Migration 과정을 리뷰해두고자 한다. Room DB를 안드로이드에 설정할 때에는 @Database mparchive.tistory.com
State는 UI의 상태를 나타내는 데 사용되는 데이터 구조입니다. State는 다음과 같은 특징을 가지고 있습니다. 변경 가능합니다. 관찰 가능합니다. 리컴포지션을 유발합니다. State를 사용하면 다음과 같은 장점이 있습니다. UI의 상태를 안전하게 관리할 수 있습니다. UI가 최신 상태를 반영할 수 있습니다. UI의 성능을 향상시킬 수 있습니다. State를 사용하지 않고 UI의 상태를 관리하면 다음과 같은 문제가 발생할 수 있습니다. UI의 상태가 불안정해질 수 있습니다. UI가 최신 상태를 반영하지 않을 수 있습니다. UI의 성능이 저하될 수 있습니다. State는 Compose에서 UI를 구성할 때 필수적인 데이터 구조입니다. UI의 상태를 관리할 때는 반드시 State를 사용해야 합니다. S..
collectAsState는 StateFlow나 Flow의 값을 State로 변환하여 사용할 수 있도록 해주는 함수입니다. State는 Compose에서 UI의 상태를 나타내는 데 사용되는 데이터 구조입니다. collectAsState를 사용하면 다음과 같은 장점이 있습니다. StateFlow나 Flow의 값을 UI에 직접 사용할 수 있습니다. StateFlow나 Flow의 값이 변경될 때마다 UI가 자동으로 리컴포즈됩니다. StateFlow나 Flow의 값이 변경될 때까지 UI가 멈추지 않습니다. collectAsState를 사용하지 않고 StateFlow나 Flow의 값을 UI에 직접 사용하면 다음과 같은 문제가 발생할 수 있습니다. UI가 StateFlow나 Flow의 값을 직접 변경할 수 있기 때..
동일한 결과가 나오지만 함수의 마지막 인자로 람다식을 적용한 코드가 더 간결함을 느낄수 있다. 람다코드의 매력은 함수의 마지막 인자가 람다식이면 중괄호{ } 로 표현하게 돼 소스가 간결해진다. 반환형이 Unit 으로 한 이유는 함수를 호출하기 위함이다. 반환값이 있으면 이방법을 쓸 이유가 없다. 일반코드 fun printNumbers(numbers: List) { for (number in numbers) { println(number) } } fun main() { val numbers = listOf(1, 2, 3) printNumbers(numbers) } 람다코드 fun printNumbers(numbers: List, action: (Int) -> Unit) { for (number in num..

우선 애뮬레이터 실행시 오류가 나면 아래 경로가 가서 로그기록을 보자 C:\Users\admin\AppData\Local\Google\AndroidStudio 버전\ 에서 idea.log 를 찾아서 "emulator" 검색하면 원인이 나온다. 저같은 경우 아래와 같은 코드가 나옴. "PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT" 역시 스택오버플로우다 ! 환경변수에 아래 형광펜을 그냥 믿고 따라 하자. 형광펜의 sdk 는 반드시 본인이 설정한 경로에 두자 https://stackoverflow.com/questions/41274830/panic-cannot-find-avd-system-path-please-define-android..
코틀린 버전 private fun isRooted(): Boolean { val buildTags = android.os.Build.TAGS if (buildTags != null && buildTags.contains("test-keys")) { return true } try { val file = File("/system/app/Superuser.apk") if (file.exists()) { return true } } catch (e: Exception) { } val rootBinaryPaths = arrayOf( "/sbin/su", "/system/bin/su", "/system/xbin/su", "/system/sd/xbin/su", "/system/bin/failsafe/su", "/d..
class MyActivity : AppCompatActivity() { private lateinit var mediaBrowserService: MyMediaBrowserService private lateinit var mediaSession: MediaSessionCompat private lateinit var player: ExoPlayer override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // MediaBrowserService를 만듭니다. mediaBrowserService = MyMediaBrowserService()..
1.remember 은 @Composable로 선언한 함수내에서 데이터가 유지되고,회전시에는 데이터 초기화 2.rememberSaveable는 @Composable로 선언한 함수뿐만 아니라 화면 회전시에도 데이터 유지 아래코드는 count 변수를 rememberSaveable 선언해 카운트 증가버튼을 눌러 숫자가 증가한후 회전해도 숫자가 초기화가 되지 않는다.하지만 rember를 사용하면 회전시 초기화가 된다. @Composable fun StateExample() { val viewModel: MyViewModel = viewModel() val count by rememberSaveable { mutableStateOf(0) } Column( modifier = Modifier.fillMaxSize(..