Android如何以编程方式测量视图或应用程序的FPS



我想测量某个使用TextureView的Android View的FPS(刷新率)。要做到这一点,我需要一些以编程方式测量FPS的方法(例如,不使用ADB.exe和不使用第三方应用程序或工具)。

我看到了这个问题,但它没有回答在哪里记录帧时间。

当屏幕刷新或合成时,Android中是否有API来获取事件?使用这种方法,测量帧时间并因此计算FPS将相对简单。

CPU使用情况也有同样的问题。感谢任何或所有用于衡量性能的API!

看起来TinyDancer可以随心所欲:

 //you can add a callback to get frame times and the calculated
 //number of dropped frames within that window
 TinyDancer.create()
     .addFrameDataCallback(new FrameDataCallback() {
        @Override
        public void doFrame(long previousFrameNS, long currentFrameNS, int droppedFrames) {
           //collect your stats here
        }
      })
      .show(this);
}

如果您需要了解CPU使用情况,可以始终使用top。Smth是这样的:

root@android:/data # top -n 1 -s cpu
User 28%, System 29%, IOW 0%, IRQ 0%
User 189 + Nice 162 + Sys 355 + Idle 509 + IOW 0 + IRQ 0 + SIRQ 2 = 1217
  PID PR CPU% S  #THR     VSS     RSS PCY UID      Name
31096  0  20% S    20 463368K  78884K  fg u0_i77   com.android.chrome:sandboxed_process0
29042  1  11% S    54 451036K  84876K  fg u0_a10   com.android.chrome
  130  2   9% S    25  79228K  37136K  fg system   /system/bin/surfaceflinger
...
...
...

从Android应用程序调用系统命令并不困难。

SystemClock.elapsedRealtime是衡量FPS的关键。方法很简单:long YOUR_VARIABLE = SystemClock.elapsedRealtime / 1000.0

该代码计算屏幕上显示的帧。elapsedRealtime以毫秒为单位计算。以毫秒为单位的1秒是1000毫秒。

相关内容

最新更新