Android电源管理系统调研报告-(2)
来源:互联网 发布:python pdf下载 编辑:程序博客网 时间:2024/04/30 05:27
1)、PowerManager.java
该文件定义了一个PowerManager类供其它文件使用,该类嵌套了一个nest class:
public class WakeLock,该nest class有如下方法:
public void setReferenceCounted(boolean value)
public void acquire()
public void acquire(long timeout)
public void release()
public void release(int flags)
public boolean isHeld()
public String toString()
@Override
protected void finalize() throws Throwable
该nest class的构造方法为:
WakeLock(int flags, String tag)
其中有一个关键的参数flags,它有如下几种情况:
PARTIAL_WAKE_LOCK: Screen off, keyboard light off
SCREEN_DIM_WAKE_LOCK: screen dim, keyboard light off
SCREEN_BRIGHT_WAKE_LOCK: screen bright, keyboard light off
FULL_WAKE_LOCK: screen bright, keyboard bright
上面4种是互斥的,即只能指定其中之一,但可以与下面两种flag不是互斥的:
ACQUIRE_CAUSES_WAKEUP: 一旦有请求锁时强制打开Screen和keyboard light
ON_AFTER_RELEASE: 在释放锁时reset activity timer
除了这个内部类,powermanager类定义了如下方法:
public WakeLock newWakeLock(int flags, String tag)
//该方法return一个nest class的一个对象。而我们看到,nest class实际上完成了WakeLock的申请与释放
public void userActivity(long when, boolean noChangeLights)
public void goToSleep(long time)
public void setBacklightBrightness(int brightness)
public int getSupportedWakeLockFlags()
public boolean isScreenOn()
该类的构造方法有两个:
private PowerManager()
public PowerManager(IPowerManager service, Handler handler)
2、Power.java
PowerManagerSerivive.java中调用了一些本地方法,该文件作为这些方法的java层与jni的中间层,声明了本地接口。
public static native void acquireWakeLock(int lock, String id);
public static native void releaseWakeLock(String id);
public static native int setScreenState(boolean on);
public static native int setLastUserActivityTimeout(long ms);
@Deprecated
public static native void shutdown();
public static void reboot(String reason) throws IOException
3、andriod_ow_Power.cpp
该文件编写了本地实现方法,从本地方法列表可以知道该本地方法与power.c是密切相关的:
static JNINativeMethod method_table[] = {
{ "acquireWakeLock", "(ILjava/lang/String;)V", (void*)acquireWakeLock },
{ "releaseWakeLock", "(Ljava/lang/String;)V", (void*)releaseWakeLock },
{ "setLastUserActivityTimeout", "(J)I", (void*)setLastUserActivityTimeout },
{ "setScreenState", "(Z)I", (void*)setScreenState },
{ "shutdown", "()V", (void*)android_os_Power_shutdown },
{ "rebootNative", "(Ljava/lang/String;)V", (void*)android_os_Power_reboot },
};
4、power.c
该文件作为Android系统的最底层,与Linux内核的power manager交互。
static int64_t systemTime();
static int open_file_descriptors(const char * const paths[]);
static inline void initialize_fds(void);
int acquire_wake_lock(int lock, const char* id);
int set_last_user_activity_timeout(int64_t delay);
int set_screen_state(int on);
- Android电源管理系统调研报告-(2)
- Android电源管理系统调研报告-(1)
- Android电源管理系统调研报告-(3)
- Android电源管理系统调研报告-(4)
- Android电源管理系统调研报告-(5)
- Android电源管理系统调研报告-(3)
- 2011-01-04 14:16 Android电源管理系统调研报告
- android系统电源管理
- Android系统级电源管理
- 监控系统调研报告
- Linux电源管理(一)电源管理系统架构
- Android系统--PowerManagerService电源管理分析
- Android 电源管理 (转载)
- Android电源管理(zz)
- Android电源管理(zz)
- Android电源管理(zz)
- bug管理系统调研
- 通信系统CMMB调研报告
- wpf添加一行
- ASP.NET基础
- 关于网站的优化
- Normalization VS Denormalization
- [转贴]三把方向法
- Android电源管理系统调研报告-(2)
- 中国概念股的诚信伤不起
- ASP.NET MD5加密
- 或导致后续中国公司上市推迟
- c# 正则表达式
- Android电源管理系统调研报告-(3)
- Android电源管理系统调研报告-(4)
- ASP.NET 中级
- Android电源管理系统调研报告-(5)