본문 바로가기
Coroutine 과 놀아보기 #1 Coroutine 과 놀아보기 #1 - android studio 에서 coroutine 관련된 것들을 인식 못한다. android 3.2.1 버전으로 업그레이드 하니 해결되었다. 해당 버전 이상으로 환경 세팅을 하고 시작하자! - 이 글은 내가 coroutine 을 학습한 후에 약간 까리한 부분들을, 테스트 코드를 짜서 실험한 결과를 공유하는 글이다. runBlocking? 새로운 coroutine 을 수행하며, 작업이 끝날 때까지 현재 thread 를 block 시킨다. (interrupt 가능하다.) - 다음과 같은 테스트를 해보았다. btn.setOnClickListener{ runBlocking{ startLogPrinting() // mainHandler 에서 50ms 마다 “logPrinti.. 2019. 5. 22.
[coroutine] exception 을 이해해보자 #2 ( in global scope ) -[coroutine] exception 을 이해해보자 #1 ( in my coroutine scope ) 과 동일한 sample 들을 직접 생성한 coroutine 이 아닌 GlobalScope 에서 수행해보기로 했다.혹시나 뭔가 동작이 다를까 해서..내가 알고 있기로는 GlobalScope 은 defaultHandler 가 setting 되어 결국 모든 exception 을 먹어 crash 가 나지 않는다는 차이만 있는것으로 알고 있는데.. 검증해보자 ( 결론은 잘못 알고 있었다. ) -class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState).. 2019. 3. 6.
[ios] beginBackgroundTaskWithExpirationHandler: 에 대한 연구 [ios] beginBackgroundTaskWithExpirationHandler: 에 대한 연구 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/beginBackgroundTaskWithExpirationHandler: -- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler -오래 진행될 새로운 background task 를 마크하는 작업을 한다.( 마크하는 것만으로 BG 상황에서 task .. 2018. 2. 16.
[ios] UIView 에 대한 이야기 [ios] UIView 에 대한 이야기 참조 : https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/ -UIView 는 다른 View 를 가질 수 있다. -보통 Subview 는 superView 의 bound 에 clip 되지 않지만 clipsToBounds property 를 사용하면 clip 시킬 수 있다. -view 의 geometry 는 frame, bounds, 그리고 center property 에 의해 결정된다.frame 은 superview 기준의 position 과 size 를 결정할 때 사용된다.center 는 size 변화 없이 position 변경할 때 사용된다.bounds 는 view.. 2017. 11. 10.
[Effective Objective-C] #34 오토릴리스 풀을 사용하여 최고 메모리 사용량을 낮춰라 [Effective Objective-C] #34 오토릴리스 풀을 사용하여 최고 메모리 사용량을 낮춰라 출처 : Effective Objective-C -오브젝티브-C 의 Reference cout 아키텍처의 기능 중 하나는 오토릴리스 풀이다.객체를 릴리스한다는 것은 release 를 호출하여 객체의 리테인 수를 즉시 줄이거나 autorelease 를 호출해 객체를 오토릴리스 풀에 추가하는 것을 말한다.오토릴리스 풀은 미래의 특정 시점에 릴리스해야 할 객체의 집합으로 사용된다.풀이 마르면, 그 때 풀의 모든 객체에 release 메시지를 보낸다.@autoreleasepool { // ...} -객체에 autorelease 메시지를 보냈을 때 적절한 오토릴리스 풀이 없다면 콘솔(console)에서 다음과 .. 2017. 9. 28.
[android] Render thread & Ripple ( Ripple 흉내내기 ) [android] Render thread & Ripple ( Ripple 흉내내기 ) 참조 : http://frogermcs.github.io/InstaMaterial-concept-part-3-feed-and-comments-buttons/ -Animation 등이 조금 더 general 하게 발전하면서, 모든 View operation 을 UI Thread ( Main Thread ) 에서만 처리하던 것이 문제가 되고 있다. 그래서 롤리팝에서부터는 Render thread 라는 게 생겨나서 rendering 과 main thread 가 분리되었다.Main thread 에서 atomic animation 을 만들어서 render thread 로 넘긴다.그래서 Rendering thread 에서 ani.. 2016. 9. 8.
[iOS Study] 웹 서비스와 UIWebView [iOS Study] 웹 서비스와 UIWebView 출처 : 아론 힐리가스의 iOS 프로그래밍 -NSURL URL 포맷에 웹 프로그램의 위치를 담고 있다. URL 은 여러 웹 서비스를 위해 기본 주소, 통신하고 있는 웹 프로그램, 전달 인자로 구성된다. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/ -NSURLRequest 웹 서버와 통신할 때 필요한 모든 데이터를 가진다. NSURL 객체와 캐시 정책, 웹 서버의 응답 제한 시간, HTTP 프로토콜을 통해 전달되는 추가 데이터 등을 가진다. NSMutableURLRequest 는 NSURLRequest 의 변경 가능한 .. 2016. 3. 15.
[android] Thread Scheduling 에 대한 이야기 [android] Thread Scheduling 에 대한 이야기 -Thread 에는 priority 값을 주어 CPU 사용량을 조절할 수 있다. ( Process#setThreadPriority( int ), Thread#setPriority( int ) ) 이 Priority 에 들어가는 값은 Nice value 라 부르는데, 다른 Thread 에 대해 얼마나 Nice 한가를 나타내는 값이다. Nice 값이 높다는 것은 다른 Thread 에게 많이 양보하는 착한(?)놈이라는 의미. 즉 Nice 값이 높을수록 우선순위가 낮아 CPU 활용이 적어진다. - Android 에서는 Main ( UI ) Thread 가 우선순위가 보통 가장 높아야 한다. BG 에서 도는 Thread 들의 Nice Value 가.. 2015. 12. 22.
ViewPager 를 사용할 때 performance, memory 이슈 직면하지 않기. ViewPager 를 사용할 때 performance, memory 이슈 직면하지 않기. View 계층의 단순화 ViewPager 는 현재 보여지는 page 뿐만 아니라 좌, 우의 page 도 pre loading 시켜 놓는다.따라서 UI 복잡한 것들이 page 를 차지하고 있다면, scroll 을 하면서 계속 버벅이게 된다.즉, Pager 에 들어가는 view 구성은 최대한 단순하게. Thread 처리를 확실히. 한 화면에 모든것이 표현될 때는 Main Thread 에서 살~짝 heavy 한 일을 해도 그럭저럭 그냥 넘어가는 일이 발생한다.하지만, viewpager 의 경우는 좌우의 화면을 미리 그려놓기 때문에 생성되면서thread 에서 작업하는 것이 길어지면 성능이슈에 당면하게 된다.이에 대해 알지 .. 2014. 5. 15.
반응형