我在视图控制器中播放视频。当用户点击硬件主页按钮并且视频正在播放时,应用程序在模拟器中以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];
}
答案 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委托中查看是否调用。