Android

Android

[Android] Companion Object 와 초기화 타이밍!!

[ Intro.. ] android kotlin 코드 예시를 찾아보면 이런 구조의 Companion object를 간혹 발견할 수 있다. 그냥 oncreate 위에 val gap = " " 로 구성해도 같은 결과일 것 같은데, 왜 Companion object에 사용할까?? 답부터 말하면, 1. 메모리에 올라가는 타이밍이 빨라짐. 2. Companion object 는 "객체" 로 관리됨 (자바의 Static과 비교됨). (저번 포스팅에서는 Companion Object와 비교되는 Java의 Static과 JVM에 대해 공부했으니 참고해주세요! https://pudroid.tistory.com/8) 3. 싱글톤으로 관리됨. 4. 따라서 공통 데이터 관리가 가능하고, 상황에 따라 메모리 관리 효율적. 이번..

Android

[Android] Context 의 정의와 종류.. 근데 잘못쓰면 메모리 누수?!

[ Intro.. ] ViewModel 내부에서 Context를 써먹을 상황이 있었다. (DB, SharedPrefernces.. 등) 저렇게 변수를 만들고 ViewModel 에서 Activity의 Context를 참조한 후 context 값을 넣어 활용하려 했으나, 갑작스레 형광팬이 그어졌다..!!!! 읽어보니 메모리 누수가 발생한다는 경고문 이였다..! 최근 진행 프로젝트와 관련하여 메모리 누수로 인해, 앱이 무거워지고 느려지며 버벅이는 현상을 체험하고있던 나는 이게 뭔지 걱정이 되었다..ㅜㅜ 메모리 누수 방지를 위해 Context가 무엇인지 이번포스팅에서 설명하고, 위 문제를 극복하는 방법을 다음 포스팅에서 정리해보려 한다!! [ Context 란? ] 공식 문서를 정리해보면 다음과 같다. 1. 어..

Android

[Android] Fragment의 정의와 필요성, Lifecycle 및 이에 따른 대응.

Intro.. 저번 포스팅에 이어 Fragment Lifecycle을 다뤄보려 한다. 프레그먼트란 무엇인지, lifecycle, 대응사항(중요) 순으로 작성해보겠다! Fragment 란? 이름 뜻 그대로 조각이다. Activity 위에서만 동작하는 화면이라 생각하면 편하다. 대신, Activity와 마찬가지로 코드, 레이아웃 xml을 작성할 수 있고, 한 Activity 위에 하나 이상의 Fragment 조각이 존재할 수 있다. 뭔가 들어보면 Activity가 할 수 있는 기능인데 굳이 필요한가?? 라고 생각할 수 있지만, 거의 대부분의 프로젝트에서 Fragment를 써먹는걸 보면 필요하니까 쓰는것같다.. 이유가 뭘까?? 첫번째로, 가볍기 때문이다. Activity의 경우 Fragment에 비해 무겁고,..

Android

[Android] Activity Lifecycle 과 화면회전 시 변화

Intro.. 간단한 기능들이 돌아가게 하는 코드를 어느정도 짜봤다면, 그리고 어느정도 안드로이드와 친해졌다면, 이제는 MVVM과 같은 아키택쳐와 메모리 누수 등을 신경쓰는 부분도 다뤄야한다. 왜일까?? MVC, MVP, MVVM, CA 와 같은 아키택쳐로 코드를 짜면 일관적이고 수정이 용이하며 정리되고 직관적인 코드를 짤수있음 (한 엑티비티에 코드가 수백줄 있고 구조를 본인도 알아보기 힘들다면 아키택쳐 공부 강추..) 메모리 누수를 신경쓰면, 불필요한 자원 낭비를 막아 앱이 느려지고 꺼지고 무거워지는 문제점을 해결 할 수 있다. 점점 앱의 크기가 커지거나 다루는 데이터가 많아질수록 이 부분의 필요를 절실히 느낄것이다. 아무튼!! 이런 부분들에 접근하고 능숙해진다면 이 모바일 시장을 헤쳐나갈 수 있다고 ..

Android

[Android] Activity 가 있는데 Fragment는 왜 써?

intro.. 저를 비롯한 많은 모바일 개발자 꿈나무들은 여러 Activity와 Fragment를 만들고 View 를 띄우고, 데이터를 주고받는 등 다양하게 활용하고 있습니다. 좋은 코드 들고와 클론 코딩을 하던 중, BaseFragment 에 Fragment Lifecycle 단계에 맞춰 다양한 오버라이드 (onCreated 등등..) 함수가 구현되어 있는것을 발견! 그런데 어떤 생명주기 단계에서는 data를 초기화하고, 어디서는 listener를 초기화하고, 어디서는 livedata 옵져버를 초기화하고.. 또 onDestory 에선 viewBinding을 null로 바꿔주고.. 가볍게만 알고있던 Fragment Lifecycle 이였는데,, 왜 각각의 위치에서 데이터, 리스너 등등을 초기화하는지.. ..

Android

[Android] JVM, DVM, ART

Intro. 이번 글은 JVM, DVM, ART에 대해 얕은 지식을 공유해보려 한다. 과거 안드로이드를 공부할 때 이론이나 운영체제 공부보단, 프래임워크를 먼저 접해보고 기능 구현을 먼저 했던 터라 이론적인 내용이 너무 부족하였다. 때문에 이것저것 공부하던 도중 JVM과 Dalvik, ART가 튀어나왔다. 뭐 실행을 도와주는 녀석들인것같은데 조금 깊게 볼 필요가 있을것같았다. JVM Java virtual Machine 가상머신 JVM은 자바 가상 머신으로, 자바 컴파일러를 통해 생성된 .class 파일(자바 바이트코드)을 JVM 내부에 있는 JIT(just in time) 컴파일러를 통해 기계어로 바꿔주는 역할을 담당한다. 즉, 자바 코드를 실행시켜주는 녀석이고, JVM으로 인해 JAVA는 운영체제에서..

pupu_2
'Android' 태그의 글 목록