본문 바로가기

gyub's 공부일기/그저 내 공부

(20)
String Literal ※※ 그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※ String Literal //1 String s1 = "abc" //2 String s2 = new String("abc") literal은 쌍따옴표 안의 문자열을 말함. 위 예제 1번처럼 literal을 통해 String 객체가 생성. 2번과 같이 new 연산자를 통해 생성하는 String 객체와는 내부적으로 다름. 자바에서 객체 생성 시 객체를 참조하는 변수(s2)는 Stack 메모리, 객체는 Heap 메모리에 저장이 된다. 하지만 literal을 통해 생성된 String 객체는 Heap 메모리에 저장 되는 것이 아닌, 별도의 공간인 String Constant Pool(상수풀)에 저장이 된다. String Constant Po..
Activity LifeCycle ※※ 그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※ View가 그려지는 과정 Activity LifeCycle onCreate() 액티비티가 처음 생성될 때 호출 onRestart() 액티비티가 중단 되었다가 다시 시작되기 직전에 호출 onStart() 액티비티가 사용자에게 보여지기 직전에 호출. 액티비티가 foreground로 나오면 onResume()이 따라오고, 액티비티가 숨겨지면 onStop()이 호출. onResume() 액티비티가 화면에 보여지고 사용자와 상호작용하기 직전에 호출. 이 시점에 액티비티는 액티비티 스택 최상단에 위치. onPause() 다른 액티비티로 넘어가거나, 뒤로 가기를 누르거나, 홈으로 돌아가는 등 현재 액티비티가 사라지기 직전에 호출. 데이터를 유지하..
View Lifecycle ※※ 그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※ View Lifecycle Constructor 모든 뷰는 생성자에서 출발 -> 생성자에서 초기화 -> defalut 값 설정 뷰는 초기 설정을 쉽게 하기위해 AttributeSet 인터페이스 지원=> 먼저 attrs.xml파일을 만들고 이걸로 뷰의 설정을 쉽게 한다. onAttachedWindow 부모 뷰가 addView(childView)를 호출 -> 자식 뷰는 윈도우에 붙음(attached) 이때부터 뷰id를 통해 접근 가능. onMeasure 뷰의 크기를 측정하는 단계. 대부분 레이아웃에 맞게 특정 크기를 가져야함. 세 단계 과정이 있음 1) 뷰가 원하는 사이즈 계산 2) MeasureSpec에 따라 크기와 mode를 가져옴 ..
View가 그려지는 과정 ※※ 그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※ View가 그려지는 과정 뷰 포커싱 -> 레이아웃 그리도록 요청 -> 루트노드(최상단 부모 뷰)에서부터 트리를 따라 전위순회 -> 부모 뷰는 자식 뷰 뒤에 그려짐 -> 형제 뷰는 전위 방식에 따라 그려짐 ( 즉, 그저 전위순회를 따라 그려짐. 다만 먼저 그려지는 부모 뷰는 자식 뷰의 뒤에 그려진다는 것을 생각.) 전위순회(Pre-order Traversal) root -> Left -> Right ( 부모노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 노드) A - B - C - E - D - F - G 레이아웃을 그리는 과정은 측정(measure) 단계와 레이아웃(layout)단계로 그려진다. measure 메서드 public fina..