Activity与Service之间通信


Activity与Service之间通信
 关于Service的Bind
1.onBind方法:当其他应用程序组件绑定到当前的Service时,就会调用此方法
2.bindService(service,conn,flag);
在Activity中怎么拿到Service中的方法或数据
我们在Service中的onBind方法中写
IBinder binder = new MyBinder();
return binder;

class MyBinder extends Binder中有个方法
public String getData(){return "数据"}
在Activity中怎么获得呢?在bindService方法中有个参数conn
在conn类中的onServiceConnected方法中有返回的IBinder对象
MyBinder binder = (MyBinder)service;
binder.getData()便可得到数据。
第二个知识点
Parcel parcel = null;
parcel = Parcel.obtain();
点击时
parcel.writeString("tk");
parcel.writeInt(100);
点击时
parcel.setDataPosition(0);
String name = parcel.readString();
int age = parcel.readInt();
输出
 
Activity与Service交互
在服务类中:
class MyBinder extends Binder{
 onTransact(int code,Parcel data,Parcel reply,int flags){
 编码
        发给Service数据 request
        回给Activity    response
  读数据
                data.readString();
  往reply中写数据
  reply.writeString("100");
 }
}
Activity中
bindService
点击按钮
Parcel data = Parcel.obtain();
Parcel replay = Parcel.obtain();
data.writeString("tk");
binder.transact(code,data,reply,flags);点,data数据传到Service

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值