当前位置: 首页>移动开发>正文

xamarin android MediaPlayer 播放完成释放 xamarin播放视频

平板系统版本Android5.1。

app功能:循环播放视频,同时将其他操作性功能浮在上面,可进行操作。

使用的是xamarin官方的formvideolibrary控件来播放视频。

陆续碰到一些问题:

1. app长时间运行后系统桌面重启,重新唤醒app,跟踪发现surfaceflinger内存溢出。反复测试,发现是因为视频控件放在grid里面导致的。

因为要做漂浮效果,使用grid,第一层放视频控件,第二层放功能性控件,这时候视频播放surfaceflinger的内存会不断增加,不会释放,直至整个安卓系统挂掉,原因未知。

解决方法:将视频控件和功能控件放在两个stacklayout里面,第二个stacklayout设置margin为(0,-xx,0,0),通过负数来让第二层控件盖到第一个上面。效果一样,但是surfaceflinger的内存不会无限增长。

2. 视频播放在主页,打开后,能看到视频在播放,这时候打开了其他页面,加载了一些数据,关闭其他页面,回到主页后,视频画面没了,声音仍然在播放,查看日志也都正常,情况就很尴尬了。

解决方法:现在为了让app能用,将其他页面做成控件,放在首页里面,控制可见不可见,这样就暂时解决了问题。目前没有时间做更多的测试,为什么打开别的页面会导致视频画面消失。

3. 更早的时候,视频播放过程中出现过视频无法播放的提示,但是后面的广告仍然在播放,后面捕捉到的时候当前视频卡死,弹出安卓系统级的“无法播放视频”提示,切换到下一个视频的时候又正常播放了。跟踪安卓日志,是mediaplayer的服务挂了,在一段时间后恢复导致的。关键的问题是提示框无法自动关掉,需要手动关掉,影响了app的其他操作。

解决方法:在视频控件中捕捉错误,在OnError事件中停止播放视频, 这样就不会弹出系统提示框,等待切换到下一个视频的时候,就能够正常播放了。

 


https://www.xamrdz.com/mobile/4xx1957394.html

相关文章: