본문 바로가기
[iOS Study] 뷰 다시 그리기와 UIScrollView [iOS Study] 뷰 다시 그리기와 UIScrollView 출처 : 아론 힐리가스의 iOS 프로그래밍 -사용자가 뷰를 터치하면 뷰는 touchesBegan:withEvent: 메시지를 받는다. -iOS 앱이 실행되면 런 루프가 시작된다.런 루프의 역할은 터치 등의 이벤트를 대기하는 것이다.런 루프는 이벤트가 발생하면 그 이벤트에 관한 적당한 핸들러 메소드를 찾는다.그 핸들러 메소드는 해당 기능을 수행하는 다른 메소드들을 부른다.메소드가 모두 완료되면 제어는 다시 런 루프로 돌아간다. 런 루프가 다시 제어권을 얻으면 갱신해야 할 뷰(dirty view) 목록을 확인한다.이 뷰들은 가장 최근 이벤트 처리 과정에서 발생한 내용들을 기반으로 다시 그려져야 한다.그래서 런 루프는 뷰 계층의 모든 것들이 다시 .. 2016. 2. 17.
[Effective Java] equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자. [Effective Java] equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자. - 인스턴스의 동일 여부를 판정하는 equals 메소드의 오버라이딩은 간단한 것 같지만, 잘못되는 경우가 많아서 참담한 결과를 초래할 수 있다. ( 기본 equals 는 참조를 비교한다. ) - 다음의 조건이 만족된다면 슈퍼 클래스의 equals 를 그냥 사용해도 된다. 1. 클래스의 각 인스턴스가 본래부터 유일한 경우. 2. 두 인스턴스가 논리적으로 같은지 검사하지 않아도 되는 클래스의 경우. 3. 수퍼 클래스에서 equals 메소드를 이미 오버라이딩 했고, 그 메소드를 그대로 사용해도 좋은 경우. 4. private 이나 패키지 전용(package private) 클래스라서 이 클래스의 equals 메소드가.. 2015. 12. 31.
[Android] App Performance Tuning Video [Android] App Performance Tuning Video Key 1. Layout Depth 줄이기2. Overdraw 줄이기 3. UI Thread block 하지 않기 4. Garbage 만들지 않기 ( 쓸데없는 객체 생성 X ) How TraceView 로 확인하면서 Setting -> Developers options -> Show GPU overdraw빨간색은 수정이 필요하다. Method Profiling 이용 Android, app performance, developer options, GARBAGE, GC, Key, layout depth, method profiling, overdraw, setting, Show GPU overdraw, traceview, Tuning, u.. 2015. 12. 11.
android largeheap - largeHeap 은 HoneyComb ( 3.0, SDK 11 ) 부터 등장. - reference doc. http://developer.android.com/guide/topics/manifest/application-element.html#largeHeap android:largeHeap Whether your application's processes should be created with a large Dalvik heap. This applies to all processes created for the application. It only applies to the first application loaded into a process; if you're using a shared u.. 2015. 6. 6.
[Effective Java] 불필요한 객체의 생성을 피하자. 불필요한 객체의 생성을 피하자. - 기능적으로 동일한 객체를 필요할 때마다 매번 새로 생성하기보다는 하나의 객체를 재사용하는 것이 좋을 때가 많다. 재사용을 하면 객체 생성에 소요되는 비용(시간과 자원)이 절감되어 실행 속도가 더 빨라지고 코드도 보기 좋게 작성할 수 있다. 불변(immutable) 객체는 항상 재사용이 가능하다. - 불 필요한 객체 생성을 막기 위한 첫번째 좋은 방법은 static 팩토리 메소드를 사용하는 것이다. - 불변객체가 아닌 가변객체더라도 상태가 변경되지 않는 것이 보장되면 재사용 가능하다. - 재사용을 막기 위한 static 팩토리 메소드에서 늦 초기화 ( lazy initialization ) 을 하는 경우가 있는데, 후에 다루겠지만 두드러진 성능 개선이 나타나진 않고, 오.. 2015. 4. 30.
[Effective Java] 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. - static 팩토리 메소드와 생성자는 공통적 제약이 있다. 선택가능한 매개변수가 많아질 경우 신축성 있게 처리하지 못한다. - 텔레스코핑 생성자(telescoping constructor) 패턴이 대안이 될 수 있으나, 마찬가지로 매개변수 수가 증가하면 무척 번거로워 진다. 가독성도 떨어지고, 유지보수도 어려워진다. ( 갯수를 세고 의미를 파악하는데만도 한세월~ ) - 자바빈즈(Java Beans) 패턴이 두번째 대안이 될 수 있으나, 이 패턴은 심각한 단점을 가지고 있다. 여러 번의 메소드 호출로 나누어져 인스턴스가 완성되기 때문에 객체가 일관된 상태를 유지하지 못할 수 있다. ( multi thread 환경 ) 또한 자바빈즈는 불변 .. 2015. 2. 8.
Android GridLayout Tutorial Android GridLayout Tutorial 점점 화면에 표시하는 UI 가 많아지면서 Layout 의 중첩 ( overdrawing ) 으로 성능 영향이 생기기 시작했다.RelativeLayout 을 통해 이를 방지하는 tutorial 혹은 guide 들이 많이 나오기는 했지만,이는 xml 코드(?) 를 엄청 복잡하게 만들고, 유지보수 또한 어려워지기 쉽상이다. 그래서 ICS 부터 GridLayout 이라는 새로운 layout 이 도입되었다.물론 support-v7 를 통해 ICS 이전 버전에서도 GridLayout 을 이용할 수 있다. http://developer.android.com/reference/android/widget/GridLayout.html GridLayout 은 Web 의 Ta.. 2014. 6. 10.
Android RenderScript blur Android RenderScript Blur RenderScript 관련 API 들은 API 11 에 등장했다.하지만 Compat library 를 통해 API 8 부터 사용 가능하다. RenderScript 는 Graphic 작업을 할 때 CPU, GPU 중 해당 작업을 최적으로 처리할 수 있는 것을 찾아내서 multiple processor 작업을 하고 나중에 그 결과를 합치는 작업을 하여 성능을 매우 높인다. Native syntax 는 C99 기반으로, OpenCL, CUDA, GLSL 등이랑 비슷하다. private void blur(Bitmap bg, View textView, float radius) { Bitmap overlay .. 2014. 6. 8.
하이퍼 바이저 ( Hypervisor ) 란? 하이퍼 바이저 ( Hypervisor ) 란? 참조 및 이미지 출처 : http://naleejang.tistory.com/91http://virtualhive.tistory.com/36 물리 서버를 가상화 환경으로 만들기 위해서는 하이퍼 바이저 ( Hypervisor ) 기술이 필요하다. 하이퍼 바이저는 호스트 컴퓨터 1대에서 다수의 운영체제를 동시에 실행할 수 있도록 해준다. 하이퍼 바이저는 2가지로 분류된다. 1. Native ( Bare-metal ) 하드웨어에 직접 설치되어 이 녀석이 여러개의 OS 를 돌린다. 호스트 OS 가 없어 이에 리소스를 할당하지 않아도 된다. 호스트형 가상화에 비해 오버헤드가 적고, 물리 컴퓨터 리소스 관리가 유연하다. 자체적으로 관리기능을 갖고 있지 않아 별도의 관리.. 2014. 5. 20.
반응형