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
|