WakeLock使用笔记

WakeLock使用笔记文档中对System.currentTimeMillis()进行了相应的描述,就是说它不适合用在需要时间间隔的地方,如Thread.sleep,Object.wait等,因为可以通过System.setCurrentTimeMillis来改变它的值。要用时间间隔,推荐使用SystemC…

文档中对System.currentTimeMillis()进行了相应的描述,就是说它不适合用在需要时间间隔的地方,如Thread.sleep, Object.wait等,因为可以通过System.setCurrentTimeMillis来改变它的值。要用时间间隔,推荐使用SystemClock中的相关方法。
Java代码  
SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间  
SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)  
SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)  
SystemClock.sleep(100); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException  
SystemClock.setCurrentTimeMillis(1000); // 设置时钟的时间,和System.setCurrentTimeMillis类似  
  
// 时间间隔  
long timeInterval = SystemClock.uptimeMillis() – lastTime;  
// do something with timeInterval  
 
SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间   
SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)   
SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)   
SystemClock.sleep(100); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException   
SystemClock.setCurrentTimeMillis(1000); // 设置时钟的时间,和System.setCurrentTimeMillis类似   
  
// 时间间隔   
long timeInterval = SystemClock.uptimeMillis() – lastTime;  
// do something with timeInterval  
Android.os.PowerManager
PowerManager的flag的意思:

Java代码
// PowerManager的一般用法,请求和释放唤醒锁  
PowerManager powerMgr = (PowerManager)  
        getSystemService(Context.POWER_SERVICE);  
int flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;  
WakeLock wakeLock = powerMgr.newWakeLock(flags, “for debug purpose tag”);  
wakeLock.acquire(); // 获取唤醒锁  
wakeLock.release(); // 释放唤醒锁  
// 在游戏中,会将acquire放在onResume中;将release放在onPause,这样在程序运行时就可以保持屏幕常量;在程序处在后台时,就恢复原来的设置。  
  
  
// PowerManager的其它api的使用  
powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠  
powerMgr.isScreenOn(); // 屏幕是否亮着  
powerMgr.userActivity(SystemClock.uptimeMillis()+100, true); // 相当于按home键,会引起从睡眠激活  
  
  
// WakeLock的其它api  
wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放  
wakeLock.isHeld(); // 当前是否持有唤醒锁  
// 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。  
// 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)  
wakeLock.setReferenceCounted(true);   
 
// PowerManager的一般用法,请求和释放唤醒锁   
PowerManager powerMgr = (PowerManager)  
        getSystemService(Context.POWER_SERVICE);  
int flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;  
WakeLock wakeLock = powerMgr.newWakeLock(flags, “for debug purpose tag”);  
wakeLock.acquire(); // 获取唤醒锁   
wakeLock.release(); // 释放唤醒锁   
// 在游戏中,会将acquire放在onResume中;将release放在onPause,这样在程序运行时就可以保持屏幕常量;在程序处在后台时,就恢复原来的设置。   
  
  
// PowerManager的其它api的使用   
powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠   
powerMgr.isScreenOn(); // 屏幕是否亮着   
powerMgr.userActivity(SystemClock.uptimeMillis()+100, true); // 相当于按home键,会引起从睡眠激活   
  
  
// WakeLock的其它api   
wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放   
wakeLock.isHeld(); // 当前是否持有唤醒锁   
// 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。   
// 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)   
wakeLock.setReferenceCounted(true);   

转载于:https://my.oschina.net/zhangqingcai/blog/71140

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35626.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注