这是indexloc提供的服务,不要输入任何密码
SlideShare a Scribd company logo
Android Looper
차영호 @ganachoco
발표자 소개
Agenda
● Java VS Android
● Where is main?
● Event Loop
● Create and Handle Event with Message
● Advanced Topic
Android Looper
● Event Loop for Android
● 공기 같은 존재
○ 어디에나 있지만, 여간해선 사용할 일은 없다.
○ 사용할 일은 없지만, 모르면 가끔씩 해결이 곤란할 때
가 생긴다.
Java vs Android
Start Entry
public class Hello {
public static void main(String[] s) {
System.out.println("Hello, World");
}
}
public class HelloActivity extends Activity {
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_hello);
}
}
Start Entry
C: > java Hello
Hello, World
????
간단한 호출경로 확인 방법(Log)
간단한 호출경로 확인 방법(Log)
main()
package android.app;
public final class ActivityThread {
public static void main(String[] args) {
// blahblah
Looper.loop();
throw new RuntimeException("Main thread loop unexpectedly exited");
}
}
Event Loop
while (true) {
// do someting
}
Event Loop
while (true) {
msg = waitAndGetMessage();
handler = msg.getTarget();
handler.handleMessage(msg);
}
간단한 호출경로 확인 방법(Log)
Message Queue
Image Source: MSDN
Message Queue
Image Source: MSDN
ANR이 반겨줍니다.
Events
● Component Lifecycle Event
○ Activity
○ Service
● Intent Handler
○ BroadcastReceiver.onReceive
● View layout & draw
● Input Event
Event Loop
● android.os.Message
● android.os.Handler
● android.os.Looper
○ android.os.HandlerThread
Message
@Override
public void onClick(View v) {
setText("Text 1");
}
private static final int MSG_HANDLE_CHANGE_TEXT = 1;
public void setText(String text) {
// Message msg = new Message(); // bad usage
Message msg = mHandler.obtainMessage(MSG_HANDLE_CHANGE_TEXT, text);
mHandler.sendMessage(msg);
}
Handler
private mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_HANDLE_TEXT_CHANGED:
mTextView.setText((String)(msg.obj));
break;
default:
break;
}
}
}
Call Flow
Looper.loop
onClick
setText
mHandler.sendMessage
...
mHandler.handleMessage
mTextView.setText
시
간
직구를 배웠습니다
변화구도 배워봅시다
Image Source: https://mirror.enha.kr/wiki/야구의 구종
Message Queue
Image Source: MSDN
sendMessageAtFrontOfQueue()
Message Queue
Image Source: MSDN
removeMessages()
Message Queue
Image Source: MSDN
sendMessageDelayed()
sendMessageAtTime()
Requirement
● 안드로이드앱이 시작하고나서
1분 후에 팝업을 띄워주세요.
Solution
Advanced Topic
● Wakelock
● AlarmManager
Wakelock
● View.setKeepScreenOn()
● WakeLock
○ FULL_WAKE_LOCK
○ SCREEN_BRIGHT_WAKE_LOCK
○ SCREEN_DIM_WAKE_LOCK
○ PARTIAL_WAKE_LOCK
AlarmManager
● ELAPSED_REALTIME
● ELAPSED_REALTIME_WAKEUP
● RTC
● RTC_WAKEUP
Q&A

More Related Content

What's hot (18)

PDF
ReactJS | 서버와 클라이어트에서 동시에 사용하는
Taegon Kim
 
PPTX
골때리는 자바스크립트 발표자료
욱진 양
 
PPTX
ECMAScript 6의 새로운 것들!
WooYoung Cho
 
PDF
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 
PDF
MVP 패턴 소개
beom kyun choi
 
PDF
비전공자의 자바스크립트 도전기
jeong seok yang
 
PPTX
Javascript 실행 가능한 코드(Executable Code)와 실행 콘텍스트(Execution Context), Lexical En...
Young-Beom Rhee
 
PDF
Javascript
Hong Hyo Sang
 
PDF
[1B4]안드로이드 동시성_프로그래밍
NAVER D2
 
PPTX
Angular2 가기전 Type script소개
Dong Jun Kwon
 
PPTX
Jquery javascript_ed10
hungrok
 
PPTX
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
 
PPTX
프론트엔드스터디 E05 js closure oop
Young-Beom Rhee
 
PPTX
Android Native Module 안정적으로 개발하기
hanbeom Park
 
PPTX
Deview 2019 눈발자국
hanbeom Park
 
PDF
Ji 개발 리뷰 (신림프로그래머)
beom kyun choi
 
PDF
모델링 연습 리뷰
beom kyun choi
 
PDF
track2 04. MS는 Rx를 왜 만들었을까? feat. RxJS/ 네이버, 김훈민
양 한빛
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
Taegon Kim
 
골때리는 자바스크립트 발표자료
욱진 양
 
ECMAScript 6의 새로운 것들!
WooYoung Cho
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 
MVP 패턴 소개
beom kyun choi
 
비전공자의 자바스크립트 도전기
jeong seok yang
 
Javascript 실행 가능한 코드(Executable Code)와 실행 콘텍스트(Execution Context), Lexical En...
Young-Beom Rhee
 
Javascript
Hong Hyo Sang
 
[1B4]안드로이드 동시성_프로그래밍
NAVER D2
 
Angular2 가기전 Type script소개
Dong Jun Kwon
 
Jquery javascript_ed10
hungrok
 
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
 
프론트엔드스터디 E05 js closure oop
Young-Beom Rhee
 
Android Native Module 안정적으로 개발하기
hanbeom Park
 
Deview 2019 눈발자국
hanbeom Park
 
Ji 개발 리뷰 (신림프로그래머)
beom kyun choi
 
모델링 연습 리뷰
beom kyun choi
 
track2 04. MS는 Rx를 왜 만들었을까? feat. RxJS/ 네이버, 김훈민
양 한빛
 

Viewers also liked (20)

PDF
Java Micro Edition Platform & Android - Seminar on Small and Mobile Devices
juricde
 
PDF
Android Concurrency Presentation
Karol Depka Pradzinski
 
PPTX
GKAC 2015 Apr. - Xamarin forms, mvvm and testing
GDG Korea
 
PDF
RetroFit by Square - GDG Dallas 06/09/16
Stacy Devino
 
PPTX
Intro to Android : Making your first App!
Stacy Devino
 
PPTX
Async task, threads, pools, and executors oh my!
Stacy Devino
 
PDF
같은 유저수, 다른 수익? 모바일 앱의 수익을 높이는 방법
GDG Korea
 
PDF
디자이너 없어도 괜찮아! (feat.Material Design Guide)
GDG Korea
 
PDF
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?
GDG Korea
 
PDF
GKAC 2015 Apr. - RxAndroid
GDG Korea
 
PDF
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive Programming
GDG Korea
 
PDF
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GDG Korea
 
PDF
Best Practices in Media Playback
GDG Korea
 
PDF
FIrebase를 이용한 호우호우 미니게임 만들기
GDG Korea
 
PPTX
Reinfocement learning
GDG Korea
 
PDF
안드로이드 데이터 바인딩
GDG Korea
 
PDF
Introduce Android TV and new features from Google I/O 2016
GDG Korea
 
PPTX
Android - Preventing common memory leaks
Ali Muzaffar
 
PDF
Android : How Do I Code Thee?
Viswanath J
 
PPT
Inside the Android application framework - Google I/O 2009
Viswanath J
 
Java Micro Edition Platform & Android - Seminar on Small and Mobile Devices
juricde
 
Android Concurrency Presentation
Karol Depka Pradzinski
 
GKAC 2015 Apr. - Xamarin forms, mvvm and testing
GDG Korea
 
RetroFit by Square - GDG Dallas 06/09/16
Stacy Devino
 
Intro to Android : Making your first App!
Stacy Devino
 
Async task, threads, pools, and executors oh my!
Stacy Devino
 
같은 유저수, 다른 수익? 모바일 앱의 수익을 높이는 방법
GDG Korea
 
디자이너 없어도 괜찮아! (feat.Material Design Guide)
GDG Korea
 
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?
GDG Korea
 
GKAC 2015 Apr. - RxAndroid
GDG Korea
 
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive Programming
GDG Korea
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GDG Korea
 
Best Practices in Media Playback
GDG Korea
 
FIrebase를 이용한 호우호우 미니게임 만들기
GDG Korea
 
Reinfocement learning
GDG Korea
 
안드로이드 데이터 바인딩
GDG Korea
 
Introduce Android TV and new features from Google I/O 2016
GDG Korea
 
Android - Preventing common memory leaks
Ali Muzaffar
 
Android : How Do I Code Thee?
Viswanath J
 
Inside the Android application framework - Google I/O 2009
Viswanath J
 
Ad

Similar to GKAC 2015 Apr. - Android Looper (20)

PPTX
Java Virtual Machine, Call stack, Java Byte Code
Javajigi Jaesung
 
PDF
Modern android
Leonardo YongUk Kim
 
PDF
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
현철 조
 
PDF
Spring Boot 2
경륜 이
 
PPTX
Eclipse RCP 1/2
cho hyun jong
 
KEY
안드로이드 세미나
ang0123dev
 
PDF
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
Kwangsung Ha
 
PPTX
Pinpoint spring_camp 2015
Woonduk-Kang
 
PDF
Laravel 로 배우는 서버사이드 #2
성일 한
 
PDF
Effective unit testing ch3. 테스트더블
YongEun Choi
 
PDF
java 8 람다식 소개와 의미 고찰
Sungchul Park
 
PPTX
TestExplorer 소개 - Android application GUI testing tool
hyunae lee
 
PPTX
TestExplorer 소개 - Android application GUI testing tool
hyunae lee
 
PDF
응답하라 반응형웹 - 4. angular
redribbon1307
 
PDF
Gradle 한번 살펴보기
Junseo Youn
 
PDF
spring.io를 통해 배우는 spring 개발사례
Daehwan Lee
 
PDF
Java 강의자료 ed11
hungrok
 
PPTX
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
Ryan Park
 
PPTX
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
Ryan Park
 
PDF
Node.js intro
Chul Ju Hong
 
Java Virtual Machine, Call stack, Java Byte Code
Javajigi Jaesung
 
Modern android
Leonardo YongUk Kim
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
현철 조
 
Spring Boot 2
경륜 이
 
Eclipse RCP 1/2
cho hyun jong
 
안드로이드 세미나
ang0123dev
 
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
Kwangsung Ha
 
Pinpoint spring_camp 2015
Woonduk-Kang
 
Laravel 로 배우는 서버사이드 #2
성일 한
 
Effective unit testing ch3. 테스트더블
YongEun Choi
 
java 8 람다식 소개와 의미 고찰
Sungchul Park
 
TestExplorer 소개 - Android application GUI testing tool
hyunae lee
 
TestExplorer 소개 - Android application GUI testing tool
hyunae lee
 
응답하라 반응형웹 - 4. angular
redribbon1307
 
Gradle 한번 살펴보기
Junseo Youn
 
spring.io를 통해 배우는 spring 개발사례
Daehwan Lee
 
Java 강의자료 ed11
hungrok
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
Ryan Park
 
Node.js intro
Chul Ju Hong
 
Ad

More from GDG Korea (7)

PDF
접근성(Accessibility)과 안드로이드
GDG Korea
 
PDF
Tensorflow 101
GDG Korea
 
PDF
Building Extraordinary Apps with Firebase Analytics
GDG Korea
 
PDF
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GDG Korea
 
PDF
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GDG Korea
 
PDF
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기
GDG Korea
 
PDF
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능
GDG Korea
 
접근성(Accessibility)과 안드로이드
GDG Korea
 
Tensorflow 101
GDG Korea
 
Building Extraordinary Apps with Firebase Analytics
GDG Korea
 
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GDG Korea
 
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GDG Korea
 
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기
GDG Korea
 
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능
GDG Korea
 

GKAC 2015 Apr. - Android Looper