service学习总结

作者: sakurajiang | 来源:发表于2016-09-21 11:46 被阅读131次

学一个东西我们一般要了解它有什么用,那么service有什么用呢?service简洁来说一般是用于处理耗时时间长,并且与activity通讯不频繁的的任务,比如下载一部电影,但是如果你下载一个图片,并且希望当它下载后显示出来,那我们没有必要使用service,我们可以使用线程。那么知道了service的作用后,
它有多少种类型呢?对于这个,我们一般是跟分的方式有关,我们可以有三种方式的分法,首先,按照
启动方式分,我们可以分为startServicebindService两种,那么这两种有什么区别呢?对于startService
而言,它不跟activity绑定,当activity退出时,它不会退出,并且用这种方式启动一个service,我们可以
对这个service下达多次的命令,因为当这个service创建后,我们再去点击startButton的按钮,你会发现
它不会重新创建一个service,但是会执行onstartCommand()方法,而对于bindService而言,它跟activity
是绑定的,如果activity退出,那么它就会onUnbind,然后destroy。而且,当你使用这个方式启动service
后,当你再点击,你会发现没有反应,这是因为当你使用一个ServiceConnection类型的参数让activity
service连接后,当你再使用这个类型的同一参数时,就不会再次进行连接,也就是说,如果你同时将ServiceConnection
类型的参数在bindButton中重新new一个,也就是说每次点击这个button都会重新创建一个serviceConnection
类型的参数,这时就会重新连接,重新调用ServiceConnection中的onServiceConnected()方法但是onbind()方法
不会再调用,因为第一次时就已经调用并且返回了一个Ibinder类型的接口,而这个接口的内容是不变的,
所以不再调用onBind()方法。而ServiceConnection类型的参数是跟最后一次点击BindButton时new的ServiceConnection
类型的参数一样,也就是说,在unBindButton中的unbindService(ServiceConnection类型的参数)方法中
传入的参数是最后一次的参数,当我们点击这个button时,会unbind这个service,但是再点击一次就会
报错,内容是这个service没有注册,只是第一次点击这个unBindbuttton时不会调用service中的onUnbind()方法,也没有destroy。
既然如此,第二次是如何出现service没有注册这个错误的呢?这一点搞不太懂。而后,我想到将所产生的conn全部存储起来,
然后分别当作参数传递给activity中的unbindService(conn)方法,
于是我将点击bindButton按钮产生的所有ServiceConnection的对象全都存储到一个
ServiceConnnection的数组中,然后在unBindButton中将数组的值分别赋值给conn,这样的话当你点击bindButton
产生多个ServiceConnection对象后,点击unBindButton按钮就会依次解除绑定,当你解除最后一个service时,就会调用
onUnbinddestroy方法,也就是说,其实onUnbind方法是等所有的service解除绑定后才调用,所以之前只解除一个service
时并没有调用这个方法,也就没有destroy,因为这个serviceactivity还是处在绑定的状态。

第二种按照服务性质分为LocalServiceRemoteService,对于android而言,RemoteService其实就是不同进程。而对于
如何启动不同进程的service,我还不会。
第三种按照实现方式分为Java ServiceNative Service两种,Native Service是用C,C++实现的服务。

相关文章

  • 学习总结:WorkShop(一)

    学习总结:WorkShop(一) 基于RestfulAPI的Service服务-Micro-Service to ...

  • service学习总结

    学一个东西我们一般要了解它有什么用,那么service有什么用呢?service简洁来说一般是用于处理耗时时间长,...

  • Android Service学习总结

    service是Android的四大组件之一,是一个可以在后台长时间运行而不使用用户界面的应用组件。服务能够被其他...

  • ubuntu中的定时任务——crontab

    1.命令总结 service cron start //启动服务 service cron stop ...

  • Service总结

    什么是serice: Service可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此...

  • service总结

    纯粹是个人学习总结,如有不对的地方请吐槽。 Service是一种在Android应用后台的一种组件,没有自己的界面...

  • service总结

    相关文章 【1】 service简单使用 本篇文章很庞大,讲述了service的基本概念,两种启动方式的比较,以及...

  • service总结

    启动方式: 启动:生命周期: onCreate() -> onStartCommand() -> onDestor...

  • JMS 初探

    本文参考链接JMS入门教程JMS的API学习总结JMS定义: JMS(Java Message Service,J...

  • 【面试题】Service的开启方式

    参考:Android Service两种启动方式详解(总结版)Service的两种启动方式

网友评论

    本文标题:service学习总结

    本文链接:https://www.haomeiwen.com/subject/xflaettx.html