Android中的service

Service:首先,service是Android的四大组件之一,service会一直在后台运行,但它却没有界面。但它却有自己的生命周期,但它却有两种途径

Android的四大组件都需要在AndroidManifest.xml文件中配置,它跟Activity很相似,它是从Context派生出来的,所以它可以调用Context里定义的方法、例如:getResources()、getContentResolver()。

1、IBinder onBind(Intent intent):该方法是Service子类必须实现的方法,返回值是IBinder对象,应用程序可通过该对象与Service组件通信。

2、onCreate()和onDestroy()分别是Service第一次创建后立即调用和Service被关闭之前将会调用

3、onStartCommand(Intent intent, int flags, int startId):该方法和onStart(Intent intent, int flags, int startId)是一样的,每次调用startService(intent)这个方法时,都会回调该方法。

4、onUnbind(Intent intent):当该Service上绑定的所有客户端都断开连接时都会回调该方法。初学者所做的测试就是调用stopService(intent)。


看到Service的生命周期,我们不难看出Service的两种的开启方式:

1、startService(intent):通过该方法启用Service,访问者与Service之间没有关联,即使访问者退出了,Service仍然运行。

2、bindService(intent, conn, Context.BIND_AUTO_CREATE):此方法与上一个不同的是,访问者与Service是绑定在一起的,访问者退出了,Service也终止运行。


startService(intent)和stopService(intent)分别启动和关闭Service,如果不对访问者进行绑定,Service和访问者之间基本不能进行数据的交换和通信。

bindService(Intent service, ServiceConnection conn,int flags)就可以解决这一问题。

service:该参数通过Intent指定要启动的Service。

conn:它用来监听访问者与Service之间的连接情况。访问者与Service之间连接成功时将回调该ServiceConnection对象中的onServiceDisconnected(ComponentName name)方法;当Service所在的宿主进程由于异常中止或其他原因终止,导致该Service与访问者之间断开连接时回调该ServiceConnection对象的onServiceConnected(ComponentName name, IBinder service)方法。

flags:指定绑定时是否自动创建Service。为0时,不自动创建;BIND_AUTO_CREATE时,自动创建。

注意:ServiceConnection对象的onServiceConnected方法中有一个IBinder对象,该对象即可实现与绑定Service之间的通信。

当开发Service类时,该Service类必须提供一个IBinder onBind(Intent intent)方法,在绑定本地Service的情况下,onBind(Intent intent)方法所返回的IBinder对象将会传给ServiceConnection对象里的onServiceConnected(ComponentName name, IBinder service)的service参数,这样访问者与Service之间就可以通信了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值