service的用法总结(二)

二、本地服务

Activity和service交互数据的时候使用(主要是service向activity中传递数据),activity和service运行在同一个进程中。

例如:实现服务执行加法操作

1.创建一个服务(ClscService),定义一个内部类(CalcBinder)继承Binder类,在该类中定义一个返回该服务对象实例的方法getService(),定义CalcBinder类型成员变量,在服务的onCreate方法中new出该对象,在onBind方法中返回该对象。

public class ClscService extends Service {
    private CalcBinder binder ;
    @Override
    public void onCreate() {
        super.onCreate();
        binder = new CalcBinder() ;
    }
    //在该方法返回内部类binder对象
    @Override
    public IBinder onBind(Intent arg0) {
        return binder;
    }
    //服务中实现的方法,两数相加
    public float add(float a ,float b) {
        return a + b ;
    }
    /*1.在与activity的交互中使用
     *2.服务的实例不是new出来的
     *3.内部类继承Binder类,写一个方法返回该服务的实例 
     */
    class CalcBinder extends Binder{
        public Service getService(){
            return ClscService.this ;
        }
    }
}

2.在要使用该服务的activity中绑定该服务。在ServiceConnection 对象的onServiceConnected方法中得到binder对象,进而通过binder.getService()得到服务的实例,执行服务中的加法计算方法

Intent clscService = new Intent(this ,ClscService.class);
this.bindService(clscService, calcConn, BIND_AUTO_CREATE);
private ServiceConnection calcConn = new ServiceConnection() {      
        @Override
        public void onServiceDisconnected(ComponentName name) {         
        }       
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            CalcBinder binder = (CalcBinder) service ;
            ClscService cs = (ClscService) binder.getService() ;
            float f = cs.add(5,4);
            Toast.makeText(ClscActivity.this, f+"", Toast.LENGTH_SHORT).show() ;
            unbindService(calcConn); 
        }
    } ;



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值