安卓四大组件之服务及简单Demo

定义:

服务是安卓实现后台运行的解决办法,适合执行那些在后台却要求运行的任务。服务的运行不依赖于任何用户界面,只有当程序进程被杀死的时候,所有依赖于该进程的服务也会停止运行。

服务不会开启线程,所有的代码都是默认运行在主线程中。也就是说,我们需要在服务的内部手动创建子线程,并在这里执行具体的任务,否则就会出现主线程被阻塞住的情况

服务的生命周期


总结:

startService后为onCreate(第一次)和onStartCommand,结束stopService或stopSelf。只会产生一个服务实例

bindService后为onCreate(第一次)和onBind(返回一个IBinder对象实例用于通信),结束为unbindService

同时调用startService和bindService,结尾需要同时调用stopService和unbindService

服务的基本用法

新建一个服务类,继承自Service。然后对其中的方法进行重写,再进行调用。

然而服务一般都有通信的功能,所以需要给服务绑定(onBind()).

例如希望在MyService中提供一个下载功能(意思一下,另外文章补充)

思路是创建一个专门的Binder对象来对Bind对象的下载功能进行管理

1.在MyService中新建一个DownLoadBinder,继承自Binder,在其内部写具体方法。

接着创建这个DownLoadBinder对象实例,最后在onBind方法中返回这个实例。这样就可以使用其中的方法了。


2.在活动绑定服务,就可以调用改服务中的Binder提供的方法

首先创建一个ServiceConnection的匿名类,在里面重写了onServiceConnected()方法和onServiceDisconnected()方法。这两个方法会在绑定成功和解除绑定时调用。

在下方使用bindService()方法使得活动(MainActivity)和服务(MyService)进行绑定。该方法接收三个参数,第一个是Intent对象,第二哥是ServiceConnection的实例,第三个是标志位,这里传入BIND_AUTO_CREATE表示活动服务绑定后自动创建服务(onCreate方法得到执行,但onStartCommand方法不会执行)

另外,解绑服务如下





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值