본문 바로가기
[coroutine] Cancellation and Timeouts ( 취소와 타임아웃 ) [coroutine] Cancellation and Timeouts ( 취소와 타임아웃 ) https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/cancellation-and-timeouts.md#cancellation-and-timeouts Cancelling coroutine execution -오랜 시간 운영되는 앱의 경우 bg coroutine 을 잘 컨트롤 할 필요가 있다.예를 들어 user 가 coroutine 을 수행시킨 page 를 닫고, 해당 작업의 결과는 더 이상 필요없다면, 해당 작업을 취소시킬 필요가 있다."launch" 함수는 Job 을 return 하며, 이 녀석은 동작중인 coroutine 을 취소시킬 수 있다.fun m.. 2020. 3. 9.
[Effective Unit Testing] Appendix B. JUnit 확장하기 [Effective Unit Testing] Appendix B. JUnit 확장하기 -JUnit 4.0 버전에 와서야 junit.framework.TestCase 로부터 벗어나게 되었다.그전까지는 모든 테스트가 TestCase 클래스를 상속해야 했기 때문에 이렇게 상속받은 동작 일부를 오버라이딩하는 것 말고는 JUnit 의 기능을 확장할 방법이 없었다.하지만, annotation 을 적극 수용한 버전에서는 훨씬 자유롭고 유연한 annotation 을 이용해 JUnit 을 확장할 수 있도록 바뀌었다. -JUnit 의 기본 동작을 확장하려면 Runner 와 Rule 의 핵심 개념을 활용해야 한다. B.1. Runner 를 통해 테스트 동작 제어하기 -@RunWtih annotation 을 따로 명시하지 않.. 2019. 3. 29.
[Android] SMS Retriever API - SMS 권한 없이 인증번호 읽어오기! [Android] SMS Retriever API - SMS 권한 없이 인증번호 읽어오기! https://developers.google.com/identity/sms-retriever/ -SMS Retriever API 를 사용하면 SMS Permission 이 없어도 인증번호를 읽어올 수 있다.덧붙여 SMS Retriever API 는 SMS Verification 에 대한 녀석으로 권한 없이 “PhoneNumber” 까지도 얻어올 수 있다.그러나 예상했겠지만, 아무것도 하지 않고 그냥 읽어올 수 있는 것은 아니다. 우선 SMS 정보 읽어오기의 Key Idea 는.. Server 에서 인증코드를 내려줄 때 특정 Hash 값을 함께 내려주고, ( app 의 package name 과 sign key 조.. 2019. 1. 18.
[Java] Semaphore 에 대해 알아보자. [Java] Semaphore 에 대해 알아보자. https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html -자바 병렬 프로그래밍을 통해 학습한 내용에도 (http://aroundck.tistory.com/867) 세마포어 내용이 있지만, 이번에 실 사용하면서 semaphore 에 더 깊이 알아봐야 겠다는 생각이 들어 학습하면서 몰랐던 내용이나 중요한 것들 위주로 글을 정리해본다. Overview Counting Semaphore 는 특정 자원이나 특정 연산을 동시에 사용하거나 호출할 수 있는 스레드의 수를 제한하고자 할 때 사용한다.Semaphore 클래스는 가상의 Permit 을 만들어 내부 상태를 관리하며, 클래스를 .. 2018. 12. 20.
[android] Mockito 맛보기 ( test library ) https://www.tutorialspoint.com/mockito/mockito_overview.htm http://www.vogella.com/tutorials/Mockito/article.html https://static.javadoc.io/org.mockito/mockito-core/2.12.0/org/mockito/Mockito.html#mockito - Mockito 는 JUnit 위에서 동작하며 Mocking 과 Verification, Stubbing 을 도와주는 프레임워크이다. ( 이 자체가 testing 하는 framework 는 아니다!! ) Mockito 를 사용하면 Mock 을 만들어서 external dependency 를 제거할 수 있고, code 가 제대로 수행하는지 검증.. 2018. 12. 7.
[android] JobScheduler 호출 flow 분석 [android] JobScheduler 호출 flow 분석 JobScheduler(JobSchedulerImpl ) -JobScheduler 는 abstract class실제 안드로이드 구현체는 JobSchedulerImpl 이며, 이는 constructor 에 전달된 binder 를 통해 통신을 한다. -JobShcedulerImpl 에 전달되는 Binder 는 JobSchedulerService 의 inner class 로 있는 JobSchedulerStub 이다.Stub 에서는 JobSchedulerService 의 여러 함수로 역할을 위임(delegate) 시킨다. JobService-JobService 도 abstract class 로 startJob, stopJob 을 구현하는 Binder .. 2018. 4. 30.
Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.9.1. Executor -Executor 는 interface 로 void execute(Runnable command); 하나의 함수를 갖는다.단순하지만 강력하다. 이는 테스크를 만드는 것과 실행 사이에 분리를 확실하게 해주기 때문에 기본 Thread 인터페이스보다 더 자주 사용된다. -public class SimpleExecutor implements Executor { @Override public void execute(Runnable runnable){ new.. 2018. 3. 23.
[Java Concurrency] 명시적인 락 13.1. Lock 과 ReentrantLock - Lock 인터페이스는 암묵적인 락과 달리 조건 없는(unconditional)락, 폴링 락, 타임아웃이 있는 락, 락 확보 대기 상태에 인터럽트를 걸 수 있는 방법 등이 포함돼 있으며, 락을 확보하고 해제하는 모든 작업이 명시적이다. - public interface Lock{ void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException; void unlock(); Condition newCondition(); } - Reentran.. 2017. 5. 5.
[Java] Executor : Java Concurrency API [Java] Executor : Java Concurrency API - Executor Interface 제공된 Runnable 을 실행하는 객체가 구현해야 할 인터페이스. execute( Runnable ) 을 구현해야 한다. public interface Executor {void execute(Runnable command);} - ExecutorService interface Executor 의 라이프 사이클을 관리할 수 있는 기능을 제공한다. 추가로 Runnable 뿐만 아니라 Callable 도 작업할 수 있다. void shutdown() 이미 Executor 에 제공된 작업은 실행되지만, 새로운 작업은 수용하지 않는다. List shutdownNow() 현재 실행중인 모든 작업을 중지시키.. 2017. 3. 8.
반응형