WEB开发网
开发学院手机开发Android 开发 Android的电源管理 阅读

Android的电源管理

 2012-05-25 09:23:28 来源:WEB开发网   
核心提示:的电源管理主要是通过Wake lock来实现的,在最底层主要是通过如下三个队列来实现其管理:static LIST_HEAD(g_inactive_locks);static LIST_HEAD(g_active_partial_wake_locks);static LIST_HEAD(g_active_full_wa
的电源管理主要是通过Wake lock来实现的,在最底层主要是通过如下三个队列来实现其管理:

static LIST_HEAD(g_inactive_locks);

static LIST_HEAD(g_active_partial_wake_locks);

static LIST_HEAD(g_active_full_wake_locks);

所有初始化后的lock都会被插入到g_inactive_locks的队列中,而当前活动的partial wake lock都会被插入到g_active_partial_wake_locks队列中, 活动的full wake lock被插入到g_active_full_wake_locks队列中, 所有的partial wake lock 和full wake lock在过期后或unlock后都会被移到inactive的队列,等待下次的调用.

在Kernel层使用wake lock步骤如下:

1.     调用函数android_init_suspend_lock初始化一个wake lock

2.     调用相关申请lock的函数android_lock_suspend 或 android_lock_suspend_auto_expire请求lock,这里只能申请partial wake lock, 如果要申请Full wake lock,则需要调用函数android_lock_partial_suspend_auto_expire(该函数没有EXPORT出来),这个命名有点奇怪,不要跟前面的android_lock_suspend_auto_expire搞混了.

3.     如果是auto expire的wake lock则可以忽略,不然则必须及时的把相关的wake lock释放掉,否则会造成系统长期运行在高功耗的状态.

4.     在驱动卸载或不再使用Wake lock时请记住及时的调用android_uninit_suspend_lock释放资源.

 

系统的状态:

上一页  1 2 3 4 5 6 7  下一页

Tags:Android 电源 管理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接