본문 바로가기
[android] Pie (9) 의 Power management [android] Pie (9) 의 Power management https://developer.android.com/about/versions/pie/power -Android 9 (API 28) 에서는 전원 관리를 위한 새로운 feature 가 추가되었다.이 전원 관리 기능은 2가지 카테고리로 나뉜다. 1. App standby buckets 시스템이 단말의 CPU, 배터리 등의 리소스 사용을 유저의 사용 패턴에 의해 제한한다. 2. Battery saver 개선 Battery saver 가 켜져 있을 때 시스템이 모든 앱에 대해 제한을 건다. 이건 기존에 있던 기능인데, Pie(9) 에서 개선되었다. * App Standby Buckets -얼마나 최근에 얼마나 자주 앱이 사용되었는지에 대한 유저.. 2019. 7. 29.
Efficient Android Threading #6 핸들러 스레드 : 고수준 큐 메커니즘 Efficient Android Threading #6 핸들러 스레드 : 고수준 큐 메커니즘 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. 8.1. 기본 사항 -플랫폼은 핸들러 스레드가 메시지를 수신할 준비가 될 때까지 handlerThread.getLooper() 를 차단 호출로 만들어 경쟁 조건 문제를 해결한다. -메시지 처리를 시작하기 전에 핸들러 스레드에 추가적인 설정이 필요하다면, 앱은 루퍼가 준비될 때 백그라운드 스레드에서 호출되는 HandlerThread.onLooperPrepared() 를 오버라이드 해야 한다. 8.2. 생명 주기 -handler.removeCallbakcsAndMessages(null) .. 2018. 3. 22.
Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. -동시 실행 설계 자원의 생성과 해체의 빈도를 감소시키기 위해 항상 새로운 스레드를 만드는 것보다 재사용을 권장한다. 필요 이상으로 스레드를 사용하지 않는다. 사용하는 스레드가 많을수록 더 많은 메모리와 프로세서 시간이 소비된다. -App 관점에서 스레드는 UI, 바인더, 백그라운드 thread 로 3가지 유형이 있다. -바인더 스레드는 IPC 에 사용된다.각 프로세스는 Thread pool 을 유지한다.Thread pool 은 종료되거나 재생성되지 않지만, 프로세스 안에서 다른 스레드.. 2018. 3. 17.
[android] Resource Merging 에 대한 이야기.. [android] Resource Merging 에 대한 이야기.. http://tools.android.com/tech-docs/new-build-system/resource-merging-Gradle build 에서는 resource merge 에 대해 새로운 규칙이 적용된다. 기존의 build system 에서는 resource folder list 를 aapt(Android Asset Packaging Tool) 에 전달하며,나중에 전달된 것이 overlay 로 작동한다. ( 옵션을 통해서 override 가 아닌 새로운 추가로 작동할 수도 있었다. )overlay 로 작동한다는 것은 새로운 resource 에 대해서 추가되는 방식이다. Gradle 에서는 aapt 에 전달하기 전에 single,.. 2018. 3. 6.
[Objective-C] 병렬 프로그래밍 [Objective-C] 병렬 프로그래밍 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 19. 19.1. 멀티 스레드 * 19.1.1. 스레드의 기본 개념 -스레드(thread)란 프로세스(process)안에서 CPU 이용권을 가진 가상적인 실행 단위이다.일반적으로 하나의 프로세스에는 하나의 스레드밖에 없지만 복수의 스레드를 생성해 프로세스 안에서 병렬로 동작시킬 수도 있다. -프로그램 실행이 시작될 때부터 동작하는 스레드를 메인 스레드라 하고 그 외에 나중에 생성된 스레드를 세컨더리 스레드(secondary thread) 또는 서브 스레드(subthread)라고 한다. -부모 스레드는 자식 스레드의 실행이 끝나길 기다렸다 합류(join)할 수 있다.대다수의 스레드 구현은 따로.. 2018. 1. 10.
[iOS Study] 병렬 프로그래밍 가이드 ( operation queue ) [iOS Study] 병렬 프로그래밍 가이드 ( operation queue ) https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html#//apple_ref/doc/uid/TP40008091-CH101-SW1 Operation Object 에 대한 이야기 -Operation object 는 NSOperation class 의 인스턴스를 이야기한다.NSOperation class 는 abstract base class 로 subclass 를 구현해야 한다. -NSInvocationOperation 과 NSBlock.. 2017. 7. 2.
[Java Concurrency] 활동성 최대로 높이기 #2 [Java Concurrency] 활동성 최대로 높이기 #2 10.2. 데드락 방지 및 원인 추적 - 한 번에 하나 이상의 락을 사용하지 않는 프로그램은 락의 순서에 의한 데드락이 발생하지 않는다. 물론 그다지 실용적이지 않은 방법일 수 있지만, 가능하다면 한 번에 하나 이상의 락을 사용하지 않도록 프로그램을 만들어 보는 것도 좋다. - 여러 개의 락을 사용해야만 한다면 락을 사용하는 순서 역시 설계 단계부터 충분히 고려해야 한다. 설계 과정에서 여러 개의 락이 서로 함께 동작하는 부분을 최대한 줄이고, 락의 순서를 지정하는 규칙을 정해 문서로 남기고 그 규칙을 정확하게 따라서 프로그램을 작성해야 한다. - 세세한 수준에서 락을 관리하는 프로그램에서는 두 단계의 전략으로 데드락 발생 가능성이 없는지를 확.. 2017. 5. 2.
[Effective Java] 스레드 스케쥴러에 의존하지 말자 [Effective Java] 스레드 스케쥴러에 의존하지 말자 - 많은 스레드가 runnable 상태일 때는 어떤 스레드를 실행시킬 것인지, 그리고 얼마 동안 실행시킬 것인지를 스레드 스케쥴러가 결정한다. 운영체제에서는 공정하게 그런 결정을 내리려고 하겠지만, 그 정책은 서로 다를 수 있다. 따라서 잘 작성한 프로그램은 그런 정책의 상세한 내용에 매달려서는 안 된다. 정확성이나 성능을 스레드 스케줄러에 의존하는 프로그램이라면 그 어떤 것도 이식성이 없어질 가능성이 크다. - 강력하고, 응답성이 좋고, 이식성이 있는 프로그램을 작성하는 가장 좋은 방법은, runnable 상태의 평균 스레드 개수가 프로세서의 개수보다 그리 크지 않게 하는 것이다. 이렇게 하면 스레드 스케줄러는 선택의 여지 없이 runnab.. 2017. 3. 17.
[iOS Study] 오토 레이아웃 소개 [iOS Study] 오토 레이아웃 소개 출처 : 아론 힐리가스의 iOS 프로그래밍 -아이패드와 아이폰 모두에서 실행 가능한 단일 앱을 유니버설 앱(Universal application) 이라 한다. -Deployment info 섹션으로 이동하여 Devices 팝업에서 iPhone 을 Universal 로 변경하면 된다. -절대 좌표 체계는 레이아웃이 깨지기 쉽다.미리 화면 크기를 알고 있다고 가정하기 때문이다. 오토 레이아웃을 사용하여 상대적인 방식으로 뷰들의 레이아웃을 기술할 수 있다.이것은 실행 시에 frames 를 결정하도록 해준다.따라서 frames 의 정의가 프로그램이 실행 중인 장비의 화면 크기를 고려할 수 있도록 한다. -레티나 장비는 비레티나 장비보다 두 배 많은 픽셀을 가지고 있지만.. 2016. 3. 3.
반응형