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

今天比较空闲,手头上活不多,学了下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>


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值