Search code examples
iosobjective-cmemory-managementmpmovieplayercontroller

MPMoviePlayerController spams 'Received memory warning'


I'm adding a MPMoviePlayerController as background view and while it plays I get spams of the log-message 'Received memory warning'. I don't now why, and maybe there is a workaround or a better solution.

Here is my code:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    [[self navigationController]setNavigationBarHidden:YES animated:YES];

    [moviePlayer play];

}

- (void) viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];

    [moviePlayer pause];

    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    //self.view.backgroundColor = [UIColor appStyleLightOrangeColor];

    //Add Video playback
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *moviePath = [bundle pathForResource:@"happy-female-friends-smartphon" ofType:@"m4v"];
    NSURL *movieURL = [NSURL fileURLWithPath:moviePath];

    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    moviePlayer.controlStyle = MPMovieControlStyleNone;
    moviePlayer.shouldAutoplay = YES;
    moviePlayer.repeatMode = MPMovieRepeatModeOne;
    moviePlayer.fullscreen =  YES;
    moviePlayer.movieSourceType = MPMovieSourceTypeFile;
    moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
    //set the frame of movie player
    moviePlayer.view.frame = self.view.bounds;


    [self.view insertSubview:moviePlayer.view atIndex:0];


    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(appBecameActive)
                                                 name:UIApplicationDidBecomeActiveNotification
                                               object:nil];

    [self performSelector:@selector(animationCode) withObject:nil afterDelay:0.1f];
}

-(void)appBecameActive{
    [moviePlayer play];
}

Solution

  • Thannks first to @tdevoy for your advices.

    I finally got rid of the warning. It was the file type! I had to convert it to .3gpand now it works much smoother and without warnings.

    On strange thing is I even use now 4mb more memory than before. But everything works great..