android alarm底層理解

來源:互聯網
上載者:User

分享以前調試alarm關機鬧鐘時,寫的關於alarm的總結;

alarm上層調用包括RTC喚醒和鬧鐘,前者使用的更頻繁,介面一樣;上層應用頻繁調用rtc喚醒系統會增加功耗,所有有些廠家做了所謂的同步心跳技術來統一規劃RTC喚醒系統;

alarm本質是底層起了timer,在系統未睡眠時當達到上層設定時間之後timer會trigger同時調用alarm的回呼函數來改變全域變數,從而
使上層發起的ioctl ANDROID_ALARM_WAIT成功返回,要是未成功返回會一直不停ioctl wait;當系統睡眠時,當前alarm timer設定到底中
RTC寄存器就起到了作用,timer trigger前幾秒便會觸發RTC中斷而同時作為中斷源喚醒系統,喚醒後timer將睡眠時間計入從而準時鬧鐘;關機鬧鐘同理,
鬧鐘前手機會通過RTC中斷觸發開機從而準時鬧鐘;


timer初始化:



alarm回呼函數:


ioctl wait://需要等待trigger時wake_up,否則進程一直睡眠;



RTC喚醒底層LOG:


寫到RTC寄存器中時間:

ALARM timer trigger時間:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.