android activity service绑定,Android Activity 怎么和Service 绑定?

这需要实现service中的onBind()函数以返回service实例给activity

1、创建service类和activity类。

2、在service类中定义一个内部类继承自Binder()类:public class MyBinder extends Binder{

public Service1 getService(){

return Service1.this;

}

}

实例化onBind()方法:private final IBinder binder = new MyyBinder();

@Override

public IBinder onBind(Intent intent){

Log.i(LOG,"onBind......");

return binder;

}

3、在activity中完成绑定Intent intent = new Intent(Activity1.this,Activity2.class);

bindService(intent,conn,Context.BIND_AUTO_CREATE);

bindService的第二个参数是一个ServiceConnection类型的参数。service和其他组件之间的连接都表示为一个ServiceConnection,要想将service和其他组件进行绑定,就需要实现一个新的ServiceConnection。public ServiceConnection conn= new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

//当连接意外断开时调用

Log.i(LOG, "onServiceDisconnected>>>>>>>>");

myservice = null;

}

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

//当建立连接时调用

Log.i(LOG, "onServiceConnected>>>>>>>>");

myservice = ((Service1.MyBinder)service).getService();

}

};

bindService的第三个参数是一个flag。

可以使用的flag有:

BIND_AUTO_CREATE:绑定完成后就启动目标service

BIND_DEBUG_UNBIND:这只在debug时使用,跟unbind有关。

BIND_NOT_FOREGROUND:确保被绑定的service永远不会有运行于前台的优先级,因为默认情况下,绑定一个service会提高它的优先级

BIND_ABOVE_CLIENT:确保客户端处于前台时,绑定的service也变为前台进程

BIND_ALLOW_OOM_MANAGEMENT:允许系统在低内存等状态下删除该service(这是自己对源码中注释的理解)

BIND_WAIVE_PRIORITY:绑定service时不改变其优先级

BIND_ADJUST_WITH_ACTIVITY:系统根据service所绑定的activity的重要程度来调整这个service的优先级。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值