일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ScrollView
- CustomScrollView
- LifeCycle
- binding
- 테스트
- textview
- 앱바
- TEST
- 계측
- viewmodel
- Kotlin
- appbar
- Dialog
- Coroutines
- Compose
- Flutter
- Navigation
- tabbar
- android
- DART
- drift
- data
- intent
- 앱
- textfield
- Button
- livedata
- 안드로이드
- activity
- scroll
- Today
- Total
목록분류 전체보기 (355)
Study Record
😶 if 문을 사용한 조건 설정 val num = 5 if (num > 5) { println("${num}은 5보다 큽니다.") } else if(num println("숫자는 1입니다.") 2 -> println("숫자는 2입니다.") 3 -> println("숫자는 3입니다.") 4 -> println("숫자는 4입니다.") 5 -> println("숫자는 5입니다.") else -> println("숫자는 1~5가 아닙니다.") }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dSN5PD/btslZPjdpFj/BHsvHsKfmA8YM3enphwS2k/img.png)
😶 Android Test Android 에서는 앱 프로젝트를 만들고 직접 설치하여 수동으로 테스트할 수 있지만 자동화된 테스트를 할 수 있다. 자동화된 테스트는 개발자가 작성한 특정 코드가 적절하게 작동하는지 확인하고 프로젝트가 계속 성장하고 변화해도 올바르게 작동하는지 확인하는 코드이다. Android 앱 프로젝트를 처음 만들면 src 디렉터리에 test 및 androidTest 디렉터리를 볼 수 있다. Android 개발은 단위 테스트와 계측 테스트라는 두 가지 유형의 자동화된 테스트가 있는데, test 디렉터리에 있으면 일반적으로 단위 테스트이고 androidTest 디렉터리에 있으면 계측 테스트이다. 테스트에는 로직이 포함되면 안된다. 로직을 테스트만 해야한다. 따라서 테스트에는 조건문이나 fo..
😶 변수 val age = 5 'val' 은 Kotlin 에서 사용하는키워드이며 변수 앞에 붙는다. val 앞에 오는 것이 변수 이름(age) 으로 "=" 는 age 변수에 뒤에 오는 5를 할당한다는 의미이다. 'val' 키워드로 선언된 변수는 한 번만 값을 설정할 수 있다. 나중에 변경하는 것은 불가능하다. (읽기 전용) var x = 5 x = 3 'var' 는 Kotlin 에서 사용하는 키워드이며 "val" 와 같이 변수 앞에 붙는다. 'var' 키워드로 선언된 변수는 변경할 수 있다. val variable = 3 println("Hello! ${variable}") ${} 기호 사이에 변수 이름을 넣어주면 문자열 사이에서 변수로 인식된다. 따라서, println() 함수의 출력값은 "Hello!..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqeCqQ/btslRn16uu8/nKEUnnLWT2AX3q4FxNOf6k/img.png)
😶 lifecycle library 를 사용하는 이유 Activity 에서 여러가지 기능을 사용하는 경우 onStart() 에서 사작하고 onStop() 끝나는 작업이 필요하다. 음악을 재생하거나 타이머를 재생하거나 하는 작업이 예시가 될 수 있다. 앱이 기능이 많아지면서 onStart() 와 onStop() 그뿐만 아니라 다른 액티비티 수명 주기에서 해야 할 작업이 많아지면 시작하고 끝나는 코드를 적지 않아 안드로이드 리소스를 낭비하거나 버그를 일으킬 수 있다. 이러한 문제를 간소화하기 위해 나온 Android Jetpack Library 가 lifecycle library 이다. lifecycle library 는 수명 주기 인식 구성요소를 빌드할 수 있는 클래스와 인터페이스를 제공한다. 수명 주기 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjjQDI/btslKIES2qi/HkN4TSZdI7WIkAURbVZgNk/img.png)
terminal 에서 adb 명령어가 없다고 나오는 경우가 있다. 이럴 때는 시스템 환경 변수에 adb 프로그램을 추가하고 다시 안드로이드 스튜디오를 시작하면 된다. adb 프로그램의 위치는 SDK Location 이 지정된 폴더로 들어가면 찾을 수 있다. 1. SDK Manager 에서 SDK 위치 찾기 2. SDK Location 위치에 들어가 보면 platform-tools 파일이 있다. 그 파일 안에 adb.exe 프로그램이 있다. adb.exe 프로그램이 있는 platform-tools 파일까지의 전체 경로를 복사한다. (이 경로를 시스템 환경 변수의 Path 에 저장할 것이다.) 3. 윈도우에서 "시스템 환경변수 편집" 에 들어가 Path 변수를 클릭하고 편집 버튼을 누른다. 4. 새로운 Pa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0bVhh/btslK8pLgrB/eLW1HH4YO80tkIb2vBJOQ1/img.png)
😶 앱이 강제로 종료되는 경우 사용자가 앱을 사용하다가 홈 화면으로 눌러 이동하게되면 앱이 종료되지 않고 백그라운드에 남아있게 된다.(Lifecycle 상에서 onStop() 이 호출됨) 그러다가 다시 사용자가 앱을 시작하면 새롭게 Activity 가 생성되지 않고 메모리에 남아있는 인스턴스 객체를 다시 불러오게 된다. 하지만 안드로이드 시스템은 백그라운드에 있는 앱들보다 현재 실행중인 앱(포그라운드)의 우선순위가 높기 때문에 백그라운드에 있는 앱들이 강제로 종료될 수 있다. 강제로 종료된 후 사용자가 다시 앱을 실행하면 Activity 를 새롭게 생성하게 된다. 뿐만 아니라, 앱의 언어 설정을 바꿔 레이아웃의 텍스트 방향을 바꿔야 하는 경우나 가로 모드, 세로 모드 같은 방향을 바꾸는 경우에도 강제 종..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FYGCj/btslLz8owJA/YIITymosy7vx29tLOf7fD1/img.png)
Activity 의 생명 주기에 따라 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestory(), onRestart() 로 나뉜다. 앱이 시작하면 onCreate() > onStart() > onResume() 가 호출되고, 앱을 종료하면 onPause() > onStop() > onDestory() 가 호출된다. onCreate() Activity 객체가 메모리에 새롭게 생성된 후 호출되며 click listener 와 data binding 셋팅 layout inflate 작업 등을 실행한다. Activity 객체가 새로 생성될 때 1번 불린다. (Activity 가 생성됨 상태에 들어간다.) onStart() Activity 가 화면에 ..
😶 Appliation Class 개요 앱 전역의 상태를 포함하는 기본 클래스로 운영체제가 앱과 상호작용하기 위해 사용하는 주요 객체이다. 앱 전역의 상태를 포함하므로 전역 변수를 선언하면 앱 어디서든 접근할 수 있다. Application() 을 상속받는 클래스를 만든다. import android.app.Application class TestApplication : Application() { override fun onCreate() { super.onCreate() } } 매니패스트 파일의 태그의 android:name 속성에 클래스를 추가해준다.