什么用于实时数据?

What to use for realtime data?

我正在构建一个应用程序,我想在其中使用 SoundMeter 监控声音响度。参见 link

但是getMaxAmplitude()所做的是returns仅在调用时的振幅值。

现在我只需要不断地实时获取值(可能是一个小dealy.max 1s)并在文本视图中显示它。但我很困惑如何正确调用该方法。 我应该使用 :

  1. 定时任务
  2. 带定时器的异步任务
  3. 服务或 IntentService
  4. 报警管理器

并请说明如何调用该方法。

请记住,数据收集可能 运行 很长时间。所以我不想耗尽电池。

AlarmManager 有严格的限制,至少要延迟15 秒才能使用。所以这是不可能的。为这样的工作使用服务对 phone 来说似乎相当乏味,而且考虑到我们需要快速的结果,总体上是不合适的。定时器任务通常用于超时,即更大的延迟值。这给我们留下了 Asynctask。我想这对您的实施来说似乎是一个不错的选择。

关于方法。现在这可以通过几种方式来完成。请注意,这些完全取决于您的逻辑。首先,您可以尝试将从 getMaxAmplitude() 获得的整数循环发送到 AsyncTask。您可以在循环内添加一个小的延迟,以确保异步任务在您在这里时完成。或者您可以简单地从 Asynctask 内部调用该方法(保持私有)。休息取决于您和您使用的逻辑。