音频流、NSTimer 和解析 JSON 场景

Posted

技术标签:

【中文标题】音频流、NSTimer 和解析 JSON 场景【英文标题】:Audio Streaming, NSTimer and parsing JSON scenario 【发布时间】:2011-12-06 17:53:04 【问题描述】:

考虑以下场景。

播放音频流的应用。然后是“正在播放”视图,其中包含艺术家和歌曲名称、当前歌曲的专辑封面以及制作人的姓名,以及小的描述和图片。所有这些都来自一个 JSON 文件。

为了知道 JSON 文件何时确实被更改,有一个额外的 .crc 文件,其中包含上次更改 JSON 的时间戳/代码。当 .crc 的内容发生变化时,就该更新 JSON 了。

所以我有一个 NSTimer 每 10 秒触发一次并打开一个 NSURLConnection,它最终返回 .crc 文件的数据。在 connectionDidFinish 上,我检查代码是否与之前的代码有所不同,如果条件为真,则加载 JSON 并最终解析其数据。

我的问题是,如果这个 NSURLConnection 的 10 秒计时器对应用程序来说太多了吗?请记住,有持续的音频流在播放。当然,当应用程序进入后台时,计时器会停止。然后当应用程序进入前台时,我强制加载 JSON 以更新视图并再次启动计时器。

现在正在播放的视图也从根视图控制器分配给 self.nowplayingview ivar(仅创建一次),并且 self.nowplayingview 被推送到堆栈。这样,当 JSON 发生变化时,我可以从根视图更新 Now Playing 视图。

你认为我应该每次都创建并推送“正在播放”视图吗?

提前致谢。

【问题讨论】:

我认为使用 NSThread 比使用 NSTimer 更好,这样更新 JSON 的代码仍然在后台执行。 @RichardJ.RossIII — 谢谢,我会试试 NSThread 看看效果如何。 【参考方案1】:

为什么不用新信息修改现有的“正在播放”视图?我也同意这可能应该在后台线程中完成(正如 Richard Ross 上面提到的那样),或者确保调用是异步完成的,这样就不会导致应用程序/界面变得迟缓和无响应。

【讨论】:

.crc 和 json 文件的调用都是异步的。我将尝试更改为 NSThread 而不是 NSTimer 以了解情况如何。谢谢。

以上是关于音频流、NSTimer 和解析 JSON 场景的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Objective C 从用户应用程序登录时间到 24 小时进行 NSTimer 调用?

AVAudioPlayer 本地音频设置番外篇:后台定时修改音频音量NSTimer

视音频数据处理入门:AAC音频码流解析

我们如何让 NSTimer 在 iOS 中为我​​的音频播放器在后台运行

调用FFmpeg SDK解析封装格式的视频为音频流和视频流

FFMpeg SDK使用4调用FFmpeg SDK解析封装格式的视频为音频流和视频流