jpcsp源码解读之四:Clock类

时钟类的行为:

当用户请求时,就返回当前时间与初始时间的差值。

注意,这是一个模拟器,该类就是模拟目标机器psp的时钟。该类的用户,就是运行于psp机器上的软件(应该是系统软件才会直接从硬件提取时钟信息),或者机器中的其他硬件(比如前一篇提到的Screen类)。返回给用户的时间,应该是机器自加电复位之后,已经运行了的时间。但是模拟器是提供了暂停功能的,暂停期间的时间,不应该被计入模拟器加电复位之后运行了的总时间。

nanoTime这个函数就是返回当前时间与初始时间的差值。该函数先检查模拟器当前是否被暂停,如果是暂停的,now就应该取暂停时的时间pauseNanos,否则now取当前系统时间System.nanoTime()。然后返回now-baseNanos

pause函数取得系统当前时间,记录在pauseNanos变量中,并且把暂停标记置位。

resume函数是相对于pause函数的,如果暂停标记被置位,说明之前pause过,resume才有动作。resume的动作是:

     baseNanos += System.nanoTime() - pauseNanos;

也就是把暂停期间经历的时间累计到base中,这样以后用户请求nanoTime时,依然是上述的now-baseNanos的逻辑。(一个稍有味道的小技巧)

然后清除暂停标记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值