Activity与Service之间通信

来源:互联网 发布:同步game center的数据 编辑:程序博客网 时间:2024/04/30 04:42

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
原创粉丝点击