728x90
더보기

안드로이드 / Android Developement / 액티비티 생명주기  / Activity Life cycle / 뷰모델 / View Model / 로깅 / Logging / SaveInstanceState / SIS

 

실무에 바로 적용하는 안드로이드 프로그래밍 4판 (제이펍, 크리스틴 마시캐노 외) 책의 리뷰입니다...
(개인 공부 목적으로 작성)

 

3장은 액티비티 생명주기를 다루고

화면 회전(onPause ) 에서 데이터가 초기화되는 문제와,

생명주기 콜백 함수를 호출하지 않고 종료되는 경우에 데이터 저장을 위해 SIS를 사용하는 방법을 배웠다

 

1. 뷰모델

뫄뫄ViewMolde.kt << ViewMoldel class 상속 형태로 만든다.

특정 액티비티화면과 연결되고,

해당 화면에 올라갈 간단한 데이터를 형상화 하는 로직을 두기 좋다.

예제 앱에서는 문제 리스트와 다음 문제로 넘어가는 함수등을 두었다.

androidx.lifecycle 패키지의 일부이다.

소멸 시 onCleared() 호출

액티비티의 onCreate 내부에 프로바이더를 이용해서 인스턴스화 한다.

액티비티가 새로 생성되어도 뷰모델은 유지되다가 Destroy 시 같이 사라진다.

그러므로 뷰 모델은 액티비티를 참조하면 안 됨

 

2. 생명주기

액티비티의 상태이다.

나의 언어로(?) 다시 정리하자면

상태는 크게 4가지로

없음 / 만들어졌으나 화면에 안보이는중 / 화면에 일부또는 전체 보이지만 상호작용x / 젤위에서 상호작용 중

이렇게 있고

각 함수가 호출되어 상태가 바뀔 때 어떤 처리를 해줄지 override 해줄 수 있다.

super 써주어서 미리 다 구현된걸 편하게 가져다 쓴다.....

귀...귀찮아

공식문서 히히

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko

 

활동 수명 주기에 관한 이해  |  Android 개발자  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페

developer.android.com

 

3. onSaveInstanceState

액티비티, 프로세스 소멸 시에도 데이터를 저장하는 수단...

Bundle 이라는 객체에 키-값 쌍의 데이터들을 저장한다.

onPause 에서 자동으로 호출되어 번들에 정보를 저장하고 액티비티가 새로 생성될 때 Bundle?에서 저장된 값을 가져와 다시 셋팅할수있다.

액티비티 정상 종료시나 기기 재부팅시에 폐기된다.

 

뷰모델과 SIS는 얼핏 용도가 비슷해보이지만 앞으로 다른 쓰임을 갖는다고 한다..

lifecycle-viewmodel-savedstate 라이브러리가 배포되었다고 하니..알고있으면 좋겟지만 지금은 책을 끝내는걸 먼저 해야지 하하....

뭐 일단 안쓰더라도 공부한것이 안드로이드를 이해하는데 도움이 된다.

실은 이 챕터를 서너번 읽으면서 약한 코틀린 문법 부분도 보강되는것 같다....

 

언제쯤 코딩해서 밥벌어먹을수있으려낭

 

728x90
728x90

2장은 MVC패턴을 아주 간단히 구현해본다.

 

44페이지의 모델-뷰-컨트롤러 설명이 간단하고 큰 도움이 되었다.

모델 - 데이터, 비즈니스 로직

뷰 - 화면에 보이는 것, 사용자 입력에 응답하는 객체

컨트롤러 - 뷰와 모델을 이어줌(뷰와 모델은 서로 통신하지 않는다), 애플리케이션 로직 포함, Activity, 보통 Fragment 의 Subclass

 

간단한 트리비아 앱을 만드는데

나는 점심메뉴 고르기 앱으로 약간 변경해보고자한다.

 

암튼... 예제와 내 앱은 아직 액티비티가 하나밖에 없는 간단한 앱이다.

 

문제와 답을 저장할 Question.kt 라는 데이터클래스를 구현하는데 이것이 모델(데이터 이므로)에 해당하고

뷰는 activity_main.xml

컨트롤러는 MainActivity.kr 파일에 해당한다..

 

 

그 외에 string resource 와 image button 에 대해 설명이 잘 나와있었다

 

..... 그냥 몇번 읽고만 넘기려다가

책리뷰쓰려고 보니 결국 구현 해보기루했다

왜 읽을땐 쉬운데 만들면 이렇게 어려운지

728x90
728x90

요즘 자기전에 짬짬히 읽어서 1~4장까지 오늘 읽었따

아직 코딩은안해봤는데 여기까지는 안드 스터디잼 하면서 뭣도모르고 짜증내면서 따라서 코딩해본(?) 부분이라서 헐 이게 이뜻이었구낭~ 하면서 읽어가는 중이다.... 

1~4장 리뷰 한번에 쓰려했는데 쓰다보니 많아져서 따로써야겟당 낼마저 쓸..까..?

 

1장 

간단히 스튜디오 설치와 SDK등에 대해 얘기해주고, 

레이아웃 파일과 리소스 등의 파일 구조에 대해 알려준다. 

리소스의 리소스 ID는 R.class에 자동으로 생성된다는 것....

여기서 아항 그래서 맨날 R.class.뭐시기 하는구나 했다 (당연한건데 설명해줘야 아는 ㅠㅠ)

 

그리고 간단히 버튼을 만들고 리스너를 설정해보는데 

Button객체를 선언하면서 lateinit을 사용하는 이유를 배웠다... 

클래스 속성 정의시 초기화를 해야하는데 버튼객체가 인플레이트 되는 시점은 onCreate, setContnetnView가 호출되고 실행되는 때 이므로 그 밖에서 선언할 때는 lateinit을 사용하는 것이다. 

 

그리고 예시에서 리스너를 익명 클래스로 사용하는데 이 부분은 배우긴 했지만 뭔가 맘으로 잘 안받아들여져서.. ㅠㅠ 코틀린 문법 공부를 더해야하나 싶다... 

 

텍스트로 된 책인데도 자동 임포트 같은 부분을 잘 알려줘서 참 좋당 가끔 이런거 다 안쓰고 타이핑하게 만드는 악덕한책들도있는데 하하.... 아니 그게 배우는 과정이라면 할말은 없지만.... 

 

암튼 뭐든지 사용할때 뭘 상속받은 클래스인지 파라미터의 의미는 뭔지 친절하게 설명해주니 참 좋다.... 

 

마지막 부분에는 빌드 과정에 대해서도 간략히 소개하여 그 부분을 3번은 읽어보았당

 

 

 

 

근데 처음...처음만드는 사람이 보기엔 좀 어렵지않낭..? 아니 경력 프로그래머면 괜찮으려나 ㅠㅠ 책제목이 실무 어쩌구니깐..... 

 

728x90
728x90

최근 공부일지는 안쓰지만...(아무래도 이것도 질려버렸나보다 참 한결같이 반쯤 꾸준한 나...)

공부는 열심히하고있었다

 

요즘 재미들린건 리눅스를 통해 운영체제에 대해 공부하는거랑... 

 

실무에 바로 적용하는 안드로이드 프로그래밍 << 이 책이다... 

 

구글의 안드로이드 개발자 코스를 따라가며 + 인프런 강의도 들으며... 조각조각 배운 안드로이드 개발을 이 책이 예쁘게 정리해주는 느낌이다... 

 

별 관심 안가는 파트도 있긴 하지만 꼭 이해하고픈 파트도 많아서 

 

퀄리티가 어떻든 완독을 한번 해보고싶다.... 

 

블로그에 기록 남겨야지!!! 화이팅!!!!

728x90

+ Recent posts