시작!(184)
-
onSaveInstanceState() 가 동작을 안한다?
간단하게 화면 전환시에, override fun onSaveInstanceState() 함수를 타는걸 보고싶었는데, Ctrl + O 로 onSaveInstanceState() 함수를 추가해서 확인을 했는데, 거기를 안타는거다. override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) { super.onSaveInstanceState(outState, outPersistentState) Log.d(TAG, "!!!! onSaveInstanceState Called !!!!") } 그래서 아래와 같이 수정했다. override fun onSaveInstanceState(outState: Bundle) { ..
2022.04.28 -
Android - 데이터 손실시 onSaveInstanceState() 사용
기기 방향을 회전시, 새 방향에 맞게 Layout 을 변경해야 할 수 있다. 이러한 시나리오에서 앱의 동작을 살펴보자. 그러면 , 시스템은 모든 주기 콜백을 호출해 활동을 종료한다. 그담에 다시 모든 주기 콜백을 호출해 활동을 시작한다. 그래서 사용하는 값들이 모두 초기화 될수가 있다. 이럴때 onSaveInstanceState() 를 사용해 번들 데이터를 저장해보자. onSaveInstanceState() 메서드는, Activity가 소멸되면 필요할 수 있는 데이터를 저장하는데 사용하는 콜백이다. 수명 주기 콜백 다이어그램에서 onSaveInstanceState()는 활동이 중지된 후 호출 된다. 또한 앱이 백그라운드로 전환 될 때마다 호출된다. 미리 추가했던 onStop() 처럼 override 함수..
2022.04.27 -
Android - 수명 주기 사용 사례
수명 주기 사용 사례 Activity는, 코드상에서 수동으로 finish() 메서드를 호출하거나, 사용자가 앱을 강종하는 경우에도 완전히 종료 될 수 있다. Android System은 앱이 오랫동안 화면에 표시되지 않으면 자체적으로 종료할 수도 있다. Android는 배터리를 보존하고, 앱의 리소스를 다른 앱에서 사용할 수 있도록 이 작업을 실행한다. 이전 단계에서 Activity가 소멸되었으므로, (onDestroy) 앱으로 돌아가면 안드로이드는 새 활동을 시작하고, onCreate, onStart, onResume을 호출한다. 이전 활동의 로그가 유지되지 않은것이다. 그렇다면 , 홈 화면으로 돌아갔을때 앱이 백그라운드에 있을때는 어떤 순서로 될까? (뒤로 버튼을 눌러 종료하지 않는경우) App을 켰..
2022.04.27 -
Android - 수명 주기
Android의 기초인 활동 에 관해 자세히 알아보자. 활동 수명 주기는, 전체 기간중 activity상태를 의미한다. 수명 주기는 , 활동이 생성되는 시점에 시작 ~ 활동이 소멸되어 리소스가 회수될 때 까지이다. 활동이 수명 주기 상태 변경에 올바르게 응답하지 않으면 버그가 발생해 동작을 혼동하거나, App에서 리소스를 너무 많이 사용 할 수 있다. App의 수명 주기를 파악하고, 수명 주기 상태 변경에 올바르게 응답하도록 해야한다. ## 기본요건 > Activity의 정의, App에서 Activity 를 만드는 방법을 알아야한다. > onCreate() Method 기능과, 이 메서드에서 실행되는 작업의 종류를 알아야한다. ## 학습 내용 > Logging 정보를 Logcat에 출력하는 방법. > A..
2022.04.27 -
Android - RecyclerView
RecyclerView는 데이터 목록을 표시하는데 사용된다. 어떤 Contents이던 상관없이, 데이터 목록을 표시하는 것은 Android에서 가장 일반적인 UI 작업 중 하나이다. Android는 목록이 있는 App을 빌드 할 수 있도록 RecyclerView를 제공한다. 스크롤 뷰를 재사용/재활용 해서 목록이 긴(큰)경우에도 효율적으로 작동하도록 설계되었다. 아래의 다이어그램에서 RecyclerView 의 각 부분을 살펴보자. item - 표시할 목록의 단일 데이터 항목. 객채 하나를 나타낸다. Adapter - RecyclerView에서 표시할 수 있도록 데이터를 가져와 준비한다. ViewHolder - 확인을 표시하기 위해 사용하거나, 재사용 할 RecyclerView용 뷰의 풀. Recycler..
2022.04.20 -
Kotlin - List, MutableList
Kotlin 의 목록 유형에는 크게 두가지가 있다. List - List는 만든 후 수정 불가. MutableList - 만든 후 수정 가능. 요소를 추가, 삭제, 업데이트 할 수 있다. List() List는 여느 언어와 같이 Elemts 와 Index 가 아래와 같이 구성되어있다. 값을 확인하고싶으면 아래와 같이 값을 불러온다. println("First element: ${numbers[0]}") println("Last index: ${numbers.size - 1}") println("Last element: ${numbers[numbers.size - 1]}") println("First: ${numbers.first()}") println("Last: ${numbers.last()}") 맨 ..
2022.04.20 -
Android - Material Design page
세련된 UI 디자인을 만들기 위해서는 아래 페이지가 도움이 될듯 하다 ! https://material.io/develop/android/docs/getting-started Material Design Build beautiful, usable products faster. Material Design is an adaptable system—backed by open-source code—that helps teams build high quality digital experiences. material.io 아래는 About Color System https://material.io/design/color/the-color-system.html#color-theme-creation Material ..
2022.04.19 -
Kotlin의 클래스 및 상속 - 3
이번에는 2에 이어서, getRoom() 함수를 사용하여 새 거주자가 방을 갖도록 하는 기능을 추가한다. 이 로직은 모든 주택에 동일하므로 Dwelling (SuperClass) 에서 함수를 구현할 수 있고, 이를 통해 모든 서브클래스와 그 하위 요소에서 함수를 사용할 수 있도록 한다. 최상위 Class 인 Dwelling 에 , getRoom() 함수를 추가한다. capa가 residents보다 많으면, residents를 +1 한다. abstract class Dwelling(private var residents: Int) { abstract val buildingMaterial: String abstract val capacity: Int fun hasRoom(): Boolean { return ..
2022.04.18 -
Kotlin의 클래스 및 상속 - 2
1편에 이어서 2편 작성하겠다. 이번엔 추상 클래스에서 추상 함수를 선언한 다음 서브클래스에서 그 기능을 구현하는 방법을 알아보도록 한다. 1. main()함수에 추가하고싶은 abstract funtion을 추가한다. ex ) abstract fun floorArea(): Double ** 참고; 추상 클래스에서 정의된 모든 추상 메서드는 추상 클래스의 서브클래스에서 구현되어야 한다. 코드를 실행하려면 먼저 서브클래스에서 floorArea()를 구현해야 한다. 2. SquareCabin 이라는 SubClass에서 floorArea를 구현할 것인데, 이 함수도 동일하게 상위 클래스의 abstract 함수를 구현하므로, 다른 변수들(buildingMaterial..capa )과 같이 , 함수에도 overri..
2022.04.18 -
Kotlin 의 Class 및 상속
채소 -> 콩 -> 완두, 강낭, 렌즈 콩 등등.. 이런식으로 최상위 Class와 하위 Class, 또는 Sub Class로 만들수 있다. 이러한 관계를 프로그래밍 측면에서 어떻게 표현할지 살펴보겠습니다. Vegetable을 Kotlin의 클래스로 만들면 Legume을 Vegetable 클래스의 하위 클래스 또는 서브클래스로 만들 수 있습니다. 즉, Vegetable 클래스의 모든 속성과 메서드가 Legume 클래스에 상속(즉, 사용 가능함)됩니다. Legume의 서브클래스(예: Lentil, Chickpea)를 만들어 클래스 계층 구조를 유지하고 확장할 수 있습니다. 그러면 Legume은 Vegetable의 하위 클래스 또는 서브클래스가 될 뿐 아니라 Lentil과 Chickpea의 상위 클래스 또는 ..
2022.04.18