https://www.linuxidc.com/Linux/2011-11/48325p2.htm

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

要用时间间隔,推荐使用SystemClock中的相关方法。

  1. SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间
  2. SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)
  3. SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)
  4. SystemClock.sleep(); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException
  5. SystemClock.setCurrentTimeMillis(); // 设置时钟的时间,和System.setCurrentTimeMillis类似
  6. // 时间间隔
  7. long timeInterval = SystemClock.uptimeMillis() - lastTime;
  8. // do something with timeInterval
  1. SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间
  2. SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)
  3. SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)
  4. SystemClock.sleep(); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException
  5. SystemClock.setCurrentTimeMillis(); // 设置时钟的时间,和System.setCurrentTimeMillis类似
  6. // 时间间隔
  7. long timeInterval = SystemClock.uptimeMillis() - lastTime;
  8. // do something with timeInterval

android.os.PowerManager
PowerManager的flag的意思:

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

Android.os.SystemClock的更多相关文章

  1. Android OS Startup

    OS puts emphases on how to provide interfaces to user's APPs for using hardware device in the conven ...

  2. android.os.NetworkOnMainThreadException异常

    在android4.0以前,访问网络的代码可以写在UI主线程,但是在android4.0以上就不能在ui主线程中访问网络了,会出现android.os.NetworkOnMainThreadExcep ...

  3. Xamarin Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy

    Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy@ ...

  4. Android.os.NetworkOnMainThreadException

    出现Android.os.NetworkOnMainThreadException错误提示的原因原因:不允许在主线程中进行网络访问解决办法:将网络访问的操作单独放到一个线程中

  5. android aidl 进程间通信需要注意的地方(android.os.TransactionTooLargeException)

    转自:http://blog.sina.com.cn/s/blog_4e1e357d0102wau9.html 1.bus工程实现通过service实现aidl实体类 2.actor工程通过发起bin ...

  6. android-解决 Android N 上 报错:android.os.FileUriExposedException

    解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appN ...

  7. Android内核开发:系统启动速度优化-Android OS启动优化(转)

    Android系统的启动优化主要分为三大部分: (1) Bootloader优化 (2) Linux Kernel的剪裁与优化 (3) Android OS部分的剪裁与优化 本文重点关注Android ...

  8. android.os.BadParcelableException: ClassNotFoundException when unmarshalling:解决办法

    例如在用AlarmManager的时候 AlarmManager alarmMgr = (AlarmManager) mContext .getSystemService(Context.ALARM_ ...

  9. 主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException

    1.必须要开子线程来操作耗时操作,android.os.NetworkOnMainThreadException new Thread(new Runnable() { @Override publi ...

随机推荐

  1. SpringMVC中前后端Date交互

    建议使用时间戳来避免日期格式带来的前后端问题,使用时间戳可以避免前后端.平台等问题. new Date().getTime()

  2. Python-字符串的常用操作

    name = "my name is irving and i am 22 years old!" #开头字母大写 print(name.capitalize()) #统计某字符个 ...

  3. dubbo源码分析4——SPI机制_ExtensionFactory类的作用

    ExtensionFactory的源码: @SPI public interface ExtensionFactory { /** * Get extension. * * @param type o ...

  4. 使用new data计算时间以及格式转换

    1.时间计算,往后加30(默认一个月的时间),sxTime表示的是在当前时间往后加几天的之后一个月 function maxDate1(){ var nowDate = new Date(); max ...

  5. [转]JS根据useAgent来判断edge, ie, firefox, chrome, opera, safari 等浏览器的类型及版本

    js根据浏览器的useAgent来判断浏览器的类型 userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值. JavaScript语法:navigator.use ...

  6. Win7系统分区提示会把选定的基本磁盘转化为动态磁盘

    其实是因为目前分区数量已经达到四个了,需要用分区工具先删除一个分区,可以解决问题了

  7. vue el-tree:默认展开第几级节点

    需求描述: Tree 树形结构,默认展开第二级菜单. 查 element 文档: 解决方法: 设置  :default-expanded-keys 的值为 idArr 数组, <el-tree ...

  8. 【转】Hibernate 配置

    转自:http://www.blogjava.net/19851985lili/articles/108128.html 由于Hibernate是为了能在各种不同环境下工作而设计的, 因此存在着大量的 ...

  9. 002_运维SOP

    一. <1>SOP:运维工作的标准化 <2>回滚:代码回滚 <3>降级:是利用有限资源,保障系统核心功能高可用.有损的架构方法 <4>多活切换:多机房切 ...

  10. EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中

    需求:EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中 效果:   /**   * 给树增加onCheck事件,首先使用cascadeCheck:false属性禁止全选,   ...