mig*_*aza 12 mono mpmovieplayercontroller xamarin.ios ios
在MonoTouch中,我们遇到了电影播放器样本的问题,因为它只会播放一次视频,但不会再播放一次.
我问这个问题是要发一个答案,因为它一直在打击各种各样的人.
Geo*_*ton 17
MPMoviePlayerController是引擎盖下的单身人士.如果您没有正确释放(ObjC)或Dispose()'d(MonoTouch)并且您创建了第二个实例,它将无法播放或仅播放音频.
此外,如果您订阅MPMoviePlayerScalingModeDidChangeNotification或MPMoviePlayerPlaybackDidFinishNotification或MPMoviePlayerContentPreloadDidFinishNotification,请注意发布的NSNotification也会引用MPMoviePlayerController,因此如果您保留它,您将有一个引用播放器.
尽管Mono的垃圾收集器最终会启动,但这是一种需要确定性终止的情况(您希望引用现在消失,当GC决定执行收集时不会消失).
这就是您希望在控制器上调用Dispose()方法以及在通知上调用Dispose()方法的原因.
例如:
// Deterministic termination, do not wait for the GC
if (moviePlayer != null){
moviePlayer.Dispose ()
moviePlayer = null;
}
Run Code Online (Sandbox Code Playgroud)
如果您正在收听通知,请在最后通知处理程序中调用Dispose,以释放它保存到MPMoviePlayerController的引用,例如:
var center = NSNotificationCenter.DefaultCenter;
center.AddObserver (
"MPMoviePlayerPlaybackDidFinishNotification"),
(notify) => { Console.WriteLine ("Done!"); notify.Dispose (); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4255 次 |
| 最近记录: |