• Android.os.SystemClock


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

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

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

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

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

    Java代码
    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.   
    10.   
    11. // PowerManager的其它api的使用  
    12. powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠  
    13. powerMgr.isScreenOn(); // 屏幕是否亮着  
    14. powerMgr.userActivity(SystemClock.uptimeMillis()+100true); // 相当于按home键,会引起从睡眠激活  
    15.   
    16.   
    17. // WakeLock的其它api  
    18. wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放  
    19. wakeLock.isHeld(); // 当前是否持有唤醒锁  
    20. // 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。  
    21. // 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)  
    22. 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.   
      10.   
      11. // PowerManager的其它api的使用   
      12. powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠   
      13. powerMgr.isScreenOn(); // 屏幕是否亮着   
      14. powerMgr.userActivity(SystemClock.uptimeMillis()+100true); // 相当于按home键,会引起从睡眠激活   
      15.   
      16.   
      17. // WakeLock的其它api   
      18. wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放   
      19. wakeLock.isHeld(); // 当前是否持有唤醒锁   
      20. // 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。   
      21. // 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)   
      22. wakeLock.setReferenceCounted(true);   

  • 相关阅读:
    java socket知识点
    java io流缓冲理解
    如何理解java回电话
    它们的定义Adapterg在etView( )正在使用View.setTag()与不同的是不使用。
    打造你自己ajax上传图片
    POJ 1166 The Clocks
    spring-framework-3.2.4.RELEASE 综合hibernate-release-4.3.5.Final一个错误Caused by: java.lang.NoClassDefFound
    [Android]Volley源代码分析(店)应用
    金融脱媒砸进?
    音乐家演奏乐器
  • 原文地址:https://www.cnblogs.com/bluestorm/p/9436569.html
Copyright © 2020-2023  润新知