iPhone:UIApplicationWillResignActiveNotification从未调用过

时间:2011-02-16 18:43:35

标签: iphone objective-c

我在视图控制器中播放视频。当用户点击硬件主页按钮并且视频正在播放时,应用程序在模拟器中以EXC_BAD_ACCESS崩溃。

我读到我应该使用applicationWillResignActive消息来停止播放视频,以解决崩溃问题。所以我试图通知通知中心,但我的选择器永远不会被调用。我做错了什么?

以下代码位于我的媒体播放器视图控制器中:

- (void) playMedia {    
    NSURL *mediaUrl = [NSURL fileURLWithPath:tmpFilePath isDirectory:FALSE];
    player = [[MPMoviePlayerViewController alloc] initWithContentURL:mediaUrl]; 
    player.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;

    player.view.frame = self.view.frame;    
    [self.view addSubview:player.view];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationWillResignActive:)
                                                 name:UIApplicationWillResignActiveNotification 
                                               object:nil];

    [player.moviePlayer play];
}

- (void)applicationWillResignActive:(NSNotification *)notification {
    // never gets called!   
    NSLog(@"resign active");
    [player.moviePlayer stop];
}

2 个答案:

答案 0 :(得分:7)

请注意,如果您在应用的Info.plist中将UIApplicationExitsOnSuspend键设置为true,则当用户点击主页按钮时,不会调用applicationWillResignActive方法。

答案 1 :(得分:1)

不确定为什么那个人不适合你,但我正在使用

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

在音频播放器/录音机中取得成功。

可能尝试实施

- (void)applicationWillResignActive:(NSNotification *)notification { }

在app委托中查看是否调用。