iOS:当应用程序不再位于前台时重置audioplayer

时间:2013-06-30 13:03:49

标签: ios avaudioplayer viewwillappear

启动应用后,我正在后台播放音频文件。该函数在viewDidLoad中调用。

-(void)playsong
{
    NSString *songUrl = [[NSBundle mainBundle] pathForResource:@"chant" ofType:@"m4a"];
    NSData *songFile = [NSData dataWithContentsOfFile:songUrl];

    NSError *error; 
    audioPlayer = [[AVAudioPlayer alloc] initWithData:songFile error:&error ];
    [audioPlayer play];
}

当用户按下主页按钮,并且歌曲的当前位置为10秒时,歌曲将停止播放。 但是当用户再次打开应用程序时,歌曲将从相同的位置开始。

我希望每次打开应用程序时都从头开始。

另外,由于内存原因,释放内存不是更好吗?

我试图从

调用该函数
- (void)viewWillAppear:(BOOL)animated

然后在

中将其设置为nil
- (void)viewWillDisappear:(BOOL)animated

但方法 - (void)viewWillDisappear :( BOOL)动画未被调用。

1 个答案:

答案 0 :(得分:1)

如果viewWillDisappear不适合您,请尝试在NSNotification中心添加一个观察者,该中心在应用程序didEnterBackground时调用方法。像这样:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(enteredBackground:)
                                             name:UIApplicationDidEnterBackgroundNotification
                                           object:nil];

然后将您的代码添加到此方法中:

-(void)enteredBackground:(NSNotification *)notification {

}

希望这有帮助!

<强>更新

好的,所以从你想要访问about us视图中的音频对象的位置开始,试试这个:

HomeViewController *HomeVC = [HomeViewController alloc] init]; 

HomeVC.audioPlayer...//then do what you want with it

只要您在家庭VC中声明了音频对象,那么这应该可行。

确保您已在其中一个关于我们的视图控制器,文件中导入了homeview控制器。