Power Manager Service

        송형주
Service를 분석하기 위해 필요한 지식?

•   Thread
•   Looper – In-process message passing
              In process
•   Intent – 시스템 전체 ...
Threads and Loopers
                       APK Package
                        Process
              Thread               ...
HandlerThread
•   Looper를 가진 스레드를 생성하기 위한 클래스
    L     를

•   Looper를 이용하기 위해서는 핸들러를 생성해야함
                           생성해...
looper란?
class LooperThread extends Thread {

     p
     public Handler mHandler;
                            ;

     pub...
Looper, Handler,
Looper Handler MessageQueue
                               Thread
                                       ...
Android Power Management
• S
  Support
        t
  –   screen on/off
  –   screen backlight on/off
  –   keyboard backligh...
Power Manager Service
           Sequence Flow
        초기화
                        power = new PowerManagerService();

   ...
WakeLock?




PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
                                 g...
Power Management Framework
Power Manger Service 구조
                    Java Side




                     C++ Side
참고
• frameworks/base/core/jni
  – 안드로이드 런타임 관련 소스
  – Android.mk : 안드로이드 런타임 Makefile
    • output : libandroid runtime 생성...
AIDL
• 데이터 마샬링/언마샬링
 – 일부 안드로이드 문서는 flattened 라는 표현
   사용
Power Manager Service 송형주 Rev02
Upcoming SlideShare
Loading in …5
×

Power Manager Service 송형주 Rev02

5,577 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,577
On SlideShare
0
From Embeds
0
Number of Embeds
47
Actions
Shares
0
Downloads
136
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Power Manager Service 송형주 Rev02

  1. 1. Power Manager Service 송형주
  2. 2. Service를 분석하기 위해 필요한 지식? • Thread • Looper – In-process message passing In process • Intent – 시스템 전체 범위의 IPC • Broadcast Receiver • Manager와 Service의 관계
  3. 3. Threads and Loopers APK Package Process Thread Local L l Intent Looper Service Receiver Call UI Activity Events Thread External Message Service Activity Queue System Calls Events
  4. 4. HandlerThread • Looper를 가진 스레드를 생성하기 위한 클래스 L 를 • Looper를 이용하기 위해서는 핸들러를 생성해야함 생성해야함.
  5. 5. looper란? class LooperThread extends Thread { p public Handler mHandler; ; public void run() { Looper.prepare(); // 현재 스레드의 looper 초기화 mHandler = new Handler() { public void handleMessage(Message msg) { // process incoming messages here } }; 핸들러 코드 Looper.loop(); // 메시지큐 실행 } }
  6. 6. Looper, Handler, Looper Handler MessageQueue Thread Message Queue Looper 3. deque 4. Dispatch 1. 메시지 수신 (message, Runnable) 2. Enque 2 E Handler handleMessage() 5. 메시지 처리
  7. 7. Android Power Management • S Support t – screen on/off – screen backlight on/off – keyboard backlight on/off – button backlight on/off – adjust screen brightness • Not Support pp – Sleep or Standby mode to fully use CPU’s capability.
  8. 8. Power Manager Service Sequence Flow 초기화 power = new PowerManagerService(); ServiceManager.addService(Context. PowerMangerService 등록 POWER_SERVICE, power); p power.init(context, hardware,  ( , , PowerMangerService ActivityManagerService.getDefault( (HandlerThread)생성 ), battery); System Ready
  9. 9. WakeLock? PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); getSystemService(Context POWER SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); wl.acquire(); wl acquire(); ..screen will stay on during this section.. wl.release();
  10. 10. Power Management Framework
  11. 11. Power Manger Service 구조 Java Side C++ Side
  12. 12. 참고 • frameworks/base/core/jni – 안드로이드 런타임 관련 소스 – Android.mk : 안드로이드 런타임 Makefile • output : libandroid runtime 생성 libandroid_runtime • A d idR ti AndroidRuntime::startReg(JNIEnv* env) t tR (JNIE ) – 일반적인 JNI로 연결되는 네이티브 함수를 등 록하는 함수
  13. 13. AIDL • 데이터 마샬링/언마샬링 – 일부 안드로이드 문서는 flattened 라는 표현 사용

×