您的位置:首页 > 移动开发 > Android开发

初次尝试Service,用android的媒体播放器来观察Service的生命周期

2014-04-10 16:59 549 查看
今天比较空闲,手头上活不多,学了下Service的用法,demo是我从网上下的,涉及到MediaPlayer的使用。
首先界面很简单,就是两个按钮,一个是启动Service,一个是关闭Service,界面如下:
<span style="font-family: Arial, Helvetica, sans-serif;"> <img src="https://img-blog.csdn.net/20140410161520515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHl5X2h5eQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">当点击启动服务了,logcat输出了如下:</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><img src="https://img-blog.csdn.net/20140410161947421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHl5X2h5eQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /></span>
可以看出调用了Service继承类的onCreate()方法和onStart()方法,当我再次点击启动服务,onStart()方法又再次被调用,说明了Service可以被多次启动,而服务以及初始化过,所以不再调用。
当我点击停止服务的时候,输出了onDestroy(),所以服务都被停止了,然后再次点击启动服务,onCreate()方法和onStart()方法再次被调用,服务开始。
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;"> 问题总结:</span>
1,这个demo在导入后就报错,我看了下在实例化MediaPlayer时候少了个资源文件:R.raw.XX,当时我在纳闷是不是上传这个资源的人抽了风,故意少给点,后来百度了下,发现raw是res下的一个文件夹,存放的主要是视频或音频文件,然后         自己随意找了个mp4文件放入到这个文件夹,这个随意也给后来程序的运行埋下bug。
<span style="font-family: Arial, Helvetica, sans-serif;">2,在点击开启服务,关闭服务,连续2次后,第三次点击开启服务,报空指针异常,即mediaplayer没有实例化,试了好多次都是这个规律,然后我百度了下mediaplayer的用法,在调用mediaplayer.create()即MediaPlayer实例化方法后,不能调用mediaplayer.prepare()方法,原话如下:</span>
<span style="font-family: Arial, Helvetica, sans-serif;">onvenience method to create a MediaPlayer for a given resource id. On success, will already have been called and must not be called again  API紧接着出现一句话:When done with the MediaPlayer, you should call release(), to free the resources. If not released, too many MediaPlayer instances will result in an exception.即每次player.stop()后都有释放资源,不然会出问题。这个程序问题就出在,然后我在网上看到原来这个里面的资源不能太多,到底能放多大我就不知道了,这个困惑有待后人解答啊!</span>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息