Android.os.SystemClock
https://www.linuxidc.com/Linux/2011-11/48325p2.htm
文档中对System.currentTimeMillis()进行了相应的描述,就是说它不适合用在需要时间间隔的地方,如Thread.sleep, Object.wait等,因为可以通过System.setCurrentTimeMillis来改变它的值。
要用时间间隔,推荐使用SystemClock中的相关方法。
- SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间
- SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)
- SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)
- SystemClock.sleep(); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException
- SystemClock.setCurrentTimeMillis(); // 设置时钟的时间,和System.setCurrentTimeMillis类似
- // 时间间隔
- long timeInterval = SystemClock.uptimeMillis() - lastTime;
- // do something with timeInterval
- SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间
- SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)
- SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)
- SystemClock.sleep(); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException
- SystemClock.setCurrentTimeMillis(); // 设置时钟的时间,和System.setCurrentTimeMillis类似
- // 时间间隔
- long timeInterval = SystemClock.uptimeMillis() - lastTime;
- // do something with timeInterval
android.os.PowerManager
PowerManager的flag的意思:
- // 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() + ); // 100ms后进入睡眠
- powerMgr.isScreenOn(); // 屏幕是否亮着
- powerMgr.userActivity(SystemClock.uptimeMillis()+, true); // 相当于按home键,会引起从睡眠激活
- // WakeLock的其它api
- wakeLock.acquire(); // 获取唤醒锁,并在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() + ); // 100ms后进入睡眠
- powerMgr.isScreenOn(); // 屏幕是否亮着
- powerMgr.userActivity(SystemClock.uptimeMillis()+, true); // 相当于按home键,会引起从睡眠激活
- // WakeLock的其它api
- wakeLock.acquire(); // 获取唤醒锁,并在1000ms后释放
- wakeLock.isHeld(); // 当前是否持有唤醒锁
- // 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。
- // 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)
- wakeLock.setReferenceCounted(true);
Android.os.SystemClock的更多相关文章
- Android OS Startup
OS puts emphases on how to provide interfaces to user's APPs for using hardware device in the conven ...
- android.os.NetworkOnMainThreadException异常
在android4.0以前,访问网络的代码可以写在UI主线程,但是在android4.0以上就不能在ui主线程中访问网络了,会出现android.os.NetworkOnMainThreadExcep ...
- Xamarin Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy
Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy@ ...
- Android.os.NetworkOnMainThreadException
出现Android.os.NetworkOnMainThreadException错误提示的原因原因:不允许在主线程中进行网络访问解决办法:将网络访问的操作单独放到一个线程中
- android aidl 进程间通信需要注意的地方(android.os.TransactionTooLargeException)
转自:http://blog.sina.com.cn/s/blog_4e1e357d0102wau9.html 1.bus工程实现通过service实现aidl实体类 2.actor工程通过发起bin ...
- android-解决 Android N 上 报错:android.os.FileUriExposedException
解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appN ...
- Android内核开发:系统启动速度优化-Android OS启动优化(转)
Android系统的启动优化主要分为三大部分: (1) Bootloader优化 (2) Linux Kernel的剪裁与优化 (3) Android OS部分的剪裁与优化 本文重点关注Android ...
- android.os.BadParcelableException: ClassNotFoundException when unmarshalling:解决办法
例如在用AlarmManager的时候 AlarmManager alarmMgr = (AlarmManager) mContext .getSystemService(Context.ALARM_ ...
- 主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException
1.必须要开子线程来操作耗时操作,android.os.NetworkOnMainThreadException new Thread(new Runnable() { @Override publi ...
随机推荐
- CentOS7开启防火墙及特定端口
开启防火墙服务 以前为了方便,把防火墙都关闭了,因为现在项目都比较重要,害怕受到攻击,所以为了安全性,现在需要将防火墙开启,接下来介绍一下步骤. 1, 首先查看防火墙状态: firewall-cmd ...
- Linux就该这么学(1)-系统概述(学习笔记)
一.热门的Linux系统开源许可协议 GNU GPL(GNU General Public License,GNU 通用公共许可证) BSD(Berkeley Software Distributio ...
- Python-简单打印进度条
import sys,time ): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.1) #sys.stdout.wr ...
- 解决flask中文乱码的问题
from flask import Flask,jsonify app = Flask(__name__) #使用jsonify模块来让网页直接显示json数据 @app.route('/json') ...
- js模板引擎-art-template常用总结(转)
原文:https://www.cnblogs.com/shiyou00/p/6841801.html art-template javascript 模板引擎,官网:https://github.co ...
- gPRC学习笔记
gPRC学习笔记 gPRC基础教程. gPRC官方文档. protobuf 3.0的简易教程. 什么是RPC RPC(remote procedure call) -- 远程过程调用(相对于本地调用的 ...
- sonar——"entrySet()" should be iterated when both the key and value are needed
When only the keys from a map are needed in a loop, iterating the keySet makes sense. But when both ...
- Golang服务器热重启、热升级、热更新(safe and graceful hot-restart/reload http server)详解
服务端代码经常需要升级,对于线上系统的升级常用的做法是,通过前端的负载均衡(如nginx)来保证升级时至少有一个服务可用,依次(灰度)升级. 而另一种更方便的方法是在应用上做热重启,直接更新源码.配置 ...
- 你的B计划在哪里?
春节同学聚会,大家聊起近况. 甲在实体经济部门工作,企业效益不好,正酝酿减员增效,他忧心忡忡,跳槽都不知道怎么跳,因为全行业都不景气. 乙从事互联网工作,行业发展热火朝天,新事物层出不穷,但是他已人到 ...
- Codeforces 487E Tourists [广义圆方树,树链剖分,线段树]
洛谷 Codeforces 思路 首先要莫名其妙地想到圆方树. 建起圆方树后,令方点的权值是双联通分量中的最小值,那么\((u,v)\)的答案就是路径\((u,v)\)上的最小值. 然而这题还有修改, ...