System.nanoTime()在Android中返回什么?

System.nanoTime()在Android中返回什么?,android,timer,elapsed,Android,Timer,Elapsed,我有一系列的活动联系在一起,一个接一个,以此类推。现在在一个活动中,我想测量经过的时间。据我所知,我会使用System.nanoTime()来查找开始时间,用户会做一些事情,然后再次使用它来查找结束时间,减去这两个时间,然后看看我在活动上花费的时间。但是假设在我的活动运行时发生了什么:我已经创建了开始时间,但是现在用户接到电话或其他什么,我的活动被放在后台。电话结束,用户返回活动。计时器是否一直在运行,即使应用程序处于后台?我离开应用程序后又返回应用程序,计时器是否“重置” 另外,当我启动Sys

我有一系列的活动联系在一起,一个接一个,以此类推。现在在一个活动中,我想测量经过的时间。据我所知,我会使用
System.nanoTime()
来查找开始时间,用户会做一些事情,然后再次使用它来查找结束时间,减去这两个时间,然后看看我在活动上花费的时间。但是假设在我的活动运行时发生了什么:我已经创建了开始时间,但是现在用户接到电话或其他什么,我的活动被放在后台。电话结束,用户返回活动。计时器是否一直在运行,即使应用程序处于后台?我离开应用程序后又返回应用程序,计时器是否“重置”

另外,当我启动
System.nanoTime()
时,它是返回自该特定活动或主活动开始以来的时间

编辑:假设我在某个点设置了第一个记号,然后应用程序进入后台,然后它返回前台,我设置了第二个记号。理想情况下,我希望经过的时间与花在后台的时间一致;
System.nanoTime()
是否实现了这一点?

您需要重写Activity类中的和方法,以便在pause中暂停计时器。并在onResume中恢复

您应该将System.nanoTime()放在onResume()上。

您需要重写Activity类中的和方法,以便在pause中暂停计时器。并在onResume中恢复

您应该根据

System.nanoTime()
返回最精确值的当前值 可用的系统计时器,以纳秒为单位

所以它不是计时器。它只是以纳秒为单位返回系统时间。它与活动无关

如果要测量活动的生存期,请在onCreate和onDestroy中获取时间。如果你想知道该活动在前台的时间,那么在onResume和onPause中获取时间。

根据

System.nanoTime()
返回最精确值的当前值 可用的系统计时器,以纳秒为单位

所以它不是计时器。它只是以纳秒为单位返回系统时间。它与活动无关

如果要测量活动的生存期,请在onCreate和onDestroy中获取时间。如果您想知道该活动在前台的时间,请在onResume和onPause中获取时间。

static long nanoTime()

返回本地系统上可用的最精确计时器的当前时间戳

您没有使用“计时器”(即任何类型的有状态对象)来表示经过的时间,您只是在等待一个长的时间。正如您所指出的,您将在将来的某个时间点再次调用System.nanoTime(),然后进行减法运算以查找经过的时间

如果要排除此活动以外的时间,如问题中的示例,则需要使用
onPause()
onResume()
来帮助您管理计算。或者,如果切换到某种计时器对象,请使用这些方法暂停并恢复计时器

你可以在任何你认为最有意义的地方“启动”你的“计时器”。如果是在用户启动某些操作(如按下按钮)时,请在OnClickListener中对其进行od。如果只是为了测量某个方法/代码路径运行的时间,请在开始时进行测量。

static long nanoTime()

返回本地系统上可用的最精确计时器的当前时间戳

您没有使用“计时器”(即任何类型的有状态对象)来表示经过的时间,您只是在等待一个长的时间。正如您所指出的,您将在将来的某个时间点再次调用System.nanoTime(),然后进行减法运算以查找经过的时间

如果要排除此活动以外的时间,如问题中的示例,则需要使用
onPause()
onResume()
来帮助您管理计算。或者,如果切换到某种计时器对象,请使用这些方法暂停并恢复计时器


你可以在任何你认为最有意义的地方“启动”你的“计时器”。如果是在用户启动某些操作(如按下按钮)时,请在OnClickListener中对其进行od。如果只是为了测量某个方法/代码路径运行的时间,请在开始时进行测量。

我认为可能是这样,
onResume()
但是,
System.nanoTime()
除了返回恢复后的时间外,还会返回暂停前的时间,这基本上是我期望/想要的。我认为可能是这样,
onResume()
但是,
System.nanoTime()
除了返回自恢复以来的时间之外,还会返回暂停之前的时间吗?这基本上就是我所期望/想要的?