iOS 4设备进入后台状态时是否可以运行NSThread或NSTimer?

时间:2011-08-19 10:40:45

标签: iphone ios4 multitasking mpmediaplayercontroller

我正在编写一个音频应用程序,使用iPod音乐播放器播放iPod音乐库中的媒体项目。

现在我知道iPod可以在后台继续播放,但是我想在后台运行一个线程或一个Timer,其中一个选择器方法定期检查音乐播放器的状态这样应用程序可以应用规则以在轨道之间应用延迟,并在后台自动将新媒体集合加载到播放器中。

这可能吗?

如果没有,是否还有其他方法可以实现此功能?

3 个答案:

答案 0 :(得分:1)

诀窍是不要使用MPMusicPlayerController,因为当你的应用程序进入后台时,它实际上放弃了对iPod应用程序的控制权(你可以通过关闭你的应用程序并打开iPod应用程序来检查这个 )。

对于我目前正在开发的音乐应用,我使用AVAudioSessionAVPlayer AVAudioPlayer)推出了自己的音乐播放器。我在播放器上实现了一个队列,并为队列提供了一个数据源(类似于 UITableViewDatasource)。所有这些都在背景中运行时非常有效,并且与iPod应用程序没有关联(并且作为额外的奖励,你的应用程序图标出现在mulitasking栏上的遥控器旁边)。

如果您开发了类似的东西,那么当您向数据源询问队列中的下一个项目时,您可以查询规则集并决定下一步该做什么。

答案 1 :(得分:0)

不确定。您可以在应用程序委托的applicationDidEnterBackground:中执行此操作。

从模板:

  

如果您的应用程序支持后台执行,则此方法为   调用而不是applicationWillTerminate:当用户退出时。

答案 2 :(得分:0)

是的,现在,您无法使用NSTimer因为它们无效。 您可以启动一个代码块以通过GCD运行,以便在具有最大值的后台运行。执行时间为10分钟。