不触摸屏幕时的Android(Juce)性能问题

Android (JUCE) performance issues when NOT touching screen

本文关键字:Juce 性能 问题 Android 触摸 触摸屏 屏幕      更新时间:2023-10-16

我正在将juce中的iOS应用程序移植到Android(目前在Beta中)。我有一些奇怪的行为,我会得到音频故障和GUI框架掉落,只有在不触摸屏幕时才会出现。

该应用程序将双簧管与Juce 5.4.0一起使用,并仅针对Android 8.0及以上编译。奇怪的是,此问题仅发生在Galaxy S9上(注释8,注9,小米Mi A1和其他一些设备都可以进行测试)。我已经尝试在Galaxy S9上进行新的工厂重置。

我是Android开发的新手。

您所经历的内容可能是Galaxy S9上的CPU频率缩放器,当未触摸屏幕时,它正在积极地降低CPU频率。这导致计算带宽不足,导致您的应用程序在音频回调中花费太长时间,从而导致欠缺/小故障。

验证此使用Systrace和Android Studio Profiler。Systrace将向您展示音频底底及CPU频率。

在跟踪过程中点击屏幕上,您应该看到CPU频率的增加,然后不久之后下降。

如果是这种情况,您可以尝试的事情很少:

  1. 确保您使用的是最佳的编译器标志-Ofast-O3
  2. 使用正常目的是为此目的而设计的最近发布的StabilizedCallback类 - 它将尝试保持CPU旋转以避免将其缩小。
  3. 监视底底(可通过AudioStream::getUnderruns()获得),并减少计算负载,直到停止获取它们为止。

如果您仍然遇到问题,请在GitHub上发布您的代码,或者至少足够多以重现该问题,我将尝试看看。

CPU频率缩放是具有明显CPU带宽要求的实时应用程序的痛苦。