android——service

个人的理解,有错再说



service



写一个继承service的MyService类,重写onCreate、onStartCommand、onDestroy,启动后执行顺序:依次执行,还有一个onBind(),会返回一个IBinder类型的值




①:startService(intent)、stopService(intent)
    不和activity通信,即连接,只需要关心 onCreate、onStartCommand、onDestroy,三个方法,实际上只要关心onStartCommand方法,在里边编写你想要的操作
    !除去第一次点击,多次点击startService()并不会多次创建,只会执行onStartCommand()
    在需要销毁的地方执行stopService(intent)即可销毁


②:startService(intent)、bindService(Intent, connection, BIND_AUTO_CREATE)、unBindService(connection) 、stopService(intent)
    需要关心onBind()方法,会返回一个IBinder类型的值,这里写一个内部类MyBinder继承于Binder,在自己写的MyBinder类中编写需要的操作(在和service绑定的activity中定义一个MyBinder类型的变量)
    和activity通信,即实现了Activity指挥Service干什么Service就去干什么的功能。
    BIND_AUTO_CREATE:activity和service绑定时候,自动创建service,即会执行onCreate ,但不执行onstartcommand
    connection:在activity内new一个ServiceConnection,里边重写了,onServiceConnected()和onServiceDisConnected()


    onServiceConnected():在获取到服务对象时的操作,在这个方法中有一个IBinder类型的参数service,将它向下转型为myBinder(MyBinder类型的变量),因为Binder实现了IBinder接口,接着可以选择执行myBinder中自己编写的业务


    onServiceDisConnected():在没获取到服务对象时的操作,不操作即可


    刚刚的内部类MyBinder是在应用中通用的,即可以和多个activity绑定。


    在MyBinder类中编写的业务仅仅只是一个业务,需要在activity中new的ServiceConnection中的onServiceConnected()执行,才是service和该activity绑定


    销毁的时候,必须先解绑再销毁


intentService

简单说,IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作启动IntentService的方式和启动传统Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们去手动控制。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以此类推。


所有请求都在一个单线程中,不会阻塞应用程序的主线程(UI Thread),同一时间只处理一个请求。


我们省去了在Service中手动开线程的麻烦,第二,当操作完成时,我们不用手动停止Service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值