【问题标题】:Get Time of Activity Transition Android获取活动转换时间 Android
【发布时间】:2015-07-09 18:00:14
【问题描述】:

有什么方法可以获取活动从a变为b的时间

活动 A

{

意图 i = new Intent(A.this,B.class);

startActivity(i);

}

在我的应用中,打开活动时会出现延迟。我做了一些更改,现在我想检查活动转换的时间。

【问题讨论】:

    标签: android android-intent android-activity oncreate


    【解决方案1】:
    1. 使用 System.nanoTime(),因为它比 Calendar 或 System.currentTimeMillis() 提供更好的精度和准确度,并将其存储在首选项中或直接登录 Logcat。
    2. 或者,使用 Debug.threadCpuTimeNanos() 但请确保您测量在同一线程中传递的时间,因为如果您尝试在多线程环境中执行此操作,这不会为您提供可靠的估计。在您的情况下,您在 UI 线程上进行测量,因此此方法也适用于您。 但是请注意,此方法侧重于时间执行,例如:

      long startTime = Debug.threadCpuTimeNanos();
      
      try {
           TimeUnit.SECONDS.sleep(1);
      } catch (InterruptedException e) { 
           e.printStackTrace();
      }
      long duration = Debug.threadCpuTimeNanos() - startTime;                  
      
      Log.i(TAG, "Duration: " + duration + " nanoseconds");
      

    根据设备的不同,logcat 打印大约 80 000 000 纳秒 ~ 80 微秒。

    1. 允许您测量时间的其他方法是:SystemClock.currentThreadTimeMillis()、SystemClock.elapsedRealTime()、SystemClock.uptimeMillis()。 在使用它之前,请注意这些方法测量的内容。 Android Developers docs come with explanation

    【讨论】:

    • 谢谢,简短而甜蜜。
    【解决方案2】:

    使用:

    Calendar c = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("dd:MMMM:yyyy HH:mm:ss a");
    String strDate = sdf.format(c.getTime());
    

    获取当前时间/日期

    • 将其放在startActivity(i); 之后以获取活动应该开始的时间。
    • 将其放在您的 Activity B 中onCreate() 以查看实际创建 Activity 的时间。

    编辑 要显示,您可以登录 strDate

    希望这会有所帮助;)

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 2023-03-15
      • 2023-03-22
      • 2017-04-25
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多