之前的一段時間,本人錯誤的任務休眠是在WindowManagerService中在訊息的形成和訊息的分發過程中進行截獲的。但是經過實驗之後,發現自己走上了一條錯誤的道路,幸好不是不歸路。
言歸正傳,對於Android的休眠喚醒,本身有一套整體的電源管理方案。總體上講,就是early_suspend和late_resume。從名稱來看我們大體上會對休眠喚醒有個感性的認識就是。這兩個過程是順序相反。因此,此處簡單的介紹下early_suspend主要是指對核心中註冊為early suspend的驅動。
request_suspend_state: sleep (0->3) at 257000110209 (2012-03-01 00:04:15.512681246 UTC)//./kernel/kernel/power/main.c:202: request_suspend_state(state);這是在核心源檔案中的位置資訊
I/power ( 1379): *** set_screen_state 0//此句是在power.c檔案的main函數中的資訊
D/SurfaceFlinger( 1195): About to give-up screen, flinger = 0xf978
V/TransportControlView( 1379): Create TCV com.android.internal.widget.TransportControlView@41341fd8
D/dalvikvm( 1379): GC_CONCURRENT freed 350K, 13% free 8663K/9927K, paused 5ms+70ms
D/dalvikvm( 1379): GC_FOR_ALLOC freed 144K, 13% free 8709K/9927K, paused 323ms
D/dalvikvm( 1379): GC_FOR_ALLOC freed 235K, 12% free 8817K/9927K, paused 239ms
D/dalvikvm( 1379): GC_FOR_ALLOC freed 105K, 10% free 8965K/9927K, paused 189ms
D/dalvikvm( 1379): GC_FOR_ALLOC freed 104K, 11% free 8907K/9927K, paused 213ms
D/dalvikvm( 1379): GC_FOR_ALLOC freed 2K, 10% free 9010K/9927K, paused 51ms
I/dalvikvm-heap( 1379): Grow heap (frag case) to 9.144MB for 124216-byte allocation
D/dalvikvm( 1379): GC_FOR_ALLOC freed <1K, 10% free 9131K/10055K, paused 47ms
I/leopard_debug( 1379): read property from sys.vmcpolicy.camera.disabled is : true
V/LockScreen( 1379): Camera disabled by Device Policy
D/dalvikvm( 1379): GC_FOR_ALLOC freed 123K, 10% free 9089K/10055K, paused 45ms
D/dalvikvm( 1379): GC_FOR_ALLOC freed 8K, 9% free 9187K/10055K, paused 40ms
D/dalvikvm( 1379): GC_FOR_ALLOC freed 111K, 10% free 9131K/10119K, paused 40ms
D/TabletStatusBar( 1503): refreshing icons: 0 notifications, mIconLayout=com.android.systemui.statusbar.tablet.NotificationIconArea$IconLayout@41117180
D/TabletStatusBar( 1503): closing notifications panel
D/TabletStatusBar( 1503): closing input methods panel
D/TabletStatusBar( 1503): closing compat panel
D/TabletStatusBar( 1503): closing recents panel
D/TabletStatusBar( 1503): closing notifications panel
D/TabletStatusBar( 1503): closing recents panel
D/TabletStatusBar( 1503): closing input methods panel
D/TabletStatusBar( 1503): closing compat panel
D/ALSAModule( 1198): open called for devices 00000000 in mode 0...
E/AudioHardwareALSA( 1198): ALSALib [vimicro/utils/alsa-lib/src/pcm/pcm.c:2210:(snd_pcm_open_noupdate) Unknown PCM AndroidPlayback]
I/ALSAModule( 1198): Initialized ALSA PLAYBACK device default
I/TabletStatusBar( 1503): DISABLE_CLOCK: yes
D/TabletStatusBar( 1503): hiding the MENU button
D/TabletStatusBar( 1503): hiding shadows (lights on)
D/TabletStatusBar( 1503): closing recents panel
PM: Syncing filesystems ... done.//suspend.c檔案夾下enter_state函數中
Freezing user space processes ... (elapsed 0.02 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
Suspending console(s) (use no_console_suspend to debug)