浅谈android中的Service

service組件是可执行的程序,它有自己的生命週期,创建、配置service与创建、配置activity的过程基本相似,下面简单介绍下service
1.构建、配置service
1.1定义一个继承service的子类
    // 当service第一次被创建之后立即回掉该方法
@Override
public void onCreate() {
super.onCreate();
}
// 该方法是service子类必须实现的方法,该方法返回一个IBinder对象,应用程序可通过该对象与service之间进行通讯
@Override
public IBinder onBind(Intent intent) {
return new Binder();
}
// 每次用户端调用startService(Intent)方法启动service时都会执行此方法
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
// 当service上绑定的所有用户端都断开连接时将会回调该方法
@Override
public void unbindService(ServiceConnection conn) {
super.unbindService(conn);
}
// 当service被关闭之前回回掉此方法
@Override
public void onDestroy() {
super.onDestroy();
}
上面这个service什么也没干--它只是重写的service组件的方法,但实际上它是service组件的框架,如果希望service组件做某些事情,那么只要在onCreate()或onStartCommand()方法中定义相关业务代码即可

1.2在androidMainfest.xml文件中配置该service
       <service android:name="com.example.MyService"
          <intent-filter>
             <!-- 为service组件的itent-filter配置action -->
            <action android:name="action.service.FIRST_ACTION">
          </intent-filter>
        </service>
        与配置activity相似的是,配置service时也可为</service>元素配置<intent-filter/>子元素,用于说明该service可被那些配置片段来配置该service
2.启动和停止service
启动service:startService();
停止service:stopService();
每当service被创建时会毁掉onCreate()方法,每次service启动时都会回调onCreate方法,多次启动一个已有的service组件将不会再回调onCreate()方法,组件每次启动都会回调onStartCommand()方法.
3.绑定本地service并与之通信
当程序通过startService()和stopService()启动、关闭service时,service与访问者之间基本上不存在太多的关联,因此service与访问者之间无法进行通讯,数据交换,此时可以使用bindService()和unbindService()方法启动,关闭service
4.Service的生命周期
通过前面的讲解,大家应该已经大致明白service的生命周期了。随着应用程序启动service方式的不同,service的生命周期也略有差异。
如果应用程序通过startService()方法来启动Service,Service的生命周期为:调用startService()->onCreate()->onStartCommand()->Service运行中->Service被自己或者调用者停止->onDestory()->Service被关闭
如果应用程序通过bindService()方法来启动Service,Service的生命周期为:调用bindService->onCreate->onBind()->客户端绑定到Service->调用unBindService取消绑定->onUnbind()->onDestory->Service被关闭
Service还有一种特殊的情形,如果Service已由某个客户端通过startService()方法启动了,接下来其它客户端再调用bindService()方法来绑定该Service后,再调用unbindService()方法解除绑定,最后又调用了bindService()方法再次绑定到Service,这个过程所触发的生命周期如下:
onCreate->onStartCommand()->onBind->onBnbind()[重写该方法时返回了true]->onRebind()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值