实战演练——仿网易音乐播放器MusicPlayer,代码没有错误,软件能跑起来,点击按钮就会崩。

一、Android开发所建的文件如下

二、跑起来之后点击按钮所出现的问题:

报下面的代码

Attempt to invoke virtual method 'void com.example.musicplayer.MusicService$MusicControl.play()' on a null object reference

模拟器错误图像如下:

三、错误原因:

因为我们写了service服务,所以我们要遵循service的要求来写。

service有两种状态:

1.启动状态:当应用组件通过调用 startService() 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响,除非手动调用才能停止服务, 已启动的服务通常是执行单一操作,而且不会将结果返回给调用方。

2.绑定状态:当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。 多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。

但是service的这两种状态都需要在AndroidManifest.xml文件中声明才能才能够真正的跑起来,在这里我就不多赘述了,想要细学的朋友可以去搜索service的基础来学习,下面我们就赶快解决这个问题。

service是一个提供耗时操作的组件,类似于一个新的线程去处理一些复杂操作,但是执行该操作过程中用户可以继续执行其他操作service不提供直接的和用户交互的接口,需要我们声明一下才能运行,我们这就是播放音乐需要声明的其中的因素之一。

四、错误解决

我是在AndroidManifest.xml中写了如下代码:

<service
    android:name=".MusicService"
    android:enabled="true"
    android:exported="true"></service>

这个代码要写在

<application></application>中

然后再运行我们的APP

我们的软件已经能跑起来,能正常的播放歌曲了。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值