Android-安排每10毫秒发生一次事件?
作者:互联网
我正在创建一个允许通过高频声波进行非常低带宽通信的应用程序.我已经可以创建一个频率并进行傅立叶变换(借助Moonblink的Audalyzer开源代码).
但是,这是我的问题:我无法使代码以正确的时间运行.假设我要每10毫秒执行一段代码,我该怎么做呢?
我已经尝试过使用TimerTask,但是在代码实际执行之前会有很大的延迟,例如最长100ms.
我也通过简单地ping当前时间并仅在该时间过去后才执行来尝试此方法.但是仍然存在延迟问题.你们有什么主意吗?
Thread analysis = new Thread(new Runnable()
{
@Override
public void run()
{
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_DISPLAY);
long executeTime = System.currentTimeMillis();
manualAnalyzer.measureStart();
while (FFTransforming)
{
if(System.currentTimeMillis() >= executeTime)
{
//Reset the timer to execute again in 10ms
executeTime+=10;
//Perform Fourier Transform
manualAnalyzer.doUpdate(0);
//TODO: Analyze the results of the transform here...
}
}
manualAnalyzer.measureStop();
}
});
analysis.start();
解决方法:
您的线程/循环策略可能与您将要达到的目标差不多.但是,10ms并不是很多时间,大多数Android设备都不是超级强大的功能,而傅立叶变换是很多工作要做.我发现您不可能在10毫秒内完成那么多工作.我怀疑您将不得不延长该期限.
标签:performance,timedelay,timer,audio,android 来源: https://codeday.me/bug/20191101/1983381.html