您的位置:首页 > 其它

Activity 与 Service 之间的通信

2016-03-28 11:31 621 查看
一,通过bindService() 传递 IBinder,可实现activity向service主动传递数据

在Service的onBind中返回Service实例

MyBinder mBinder = new MyBinder();

@Override

public IBinder onBind(Intent intent){

return mBinder;

}

class MyBinder extends Binder{

//     
返回当前service实例

public MyService getService(){

return MyService.this;

}

//
传递的数据

public void setData(String i){

}

}

在Activity 绑定Service时得到Service实例

private MyService mService;

//ServiceConnection 实例

private ServiceConnection connection = new SreviceConnection(){

@Override

public void onServiceConnected(ComponentName name, IBinder service){

mService = ((MyService.MyBinder) service).getService();

}

@Override

public void onServiceDisconnected(ComponentName){

}

};



二,监听接口,可实现service主动向activity传递数据

在SerVice中实现接口:

private OnChangeListener mListener;

public interface onChangeListener{

void onChange(String str, int duration);

}

public void setOnChangeListener(OnChangeListener listener){

this.mListener = listener;

}

在Activity中监听接口:

private MyService mService;

//ServiceConnection 实例

private ServiceConnection connection = new SreviceConnection(){

@Override

public void onServiceConnected(ComponentName name, IBinder service){

mService = ((MyService.MyBinder) service).getService();

mService.setOnChangeListener(new MyselfService.OnChangeListener() {

@Override

public void onChange(String str, int duration){

}

});

}

@Override

public
void onServiceDisconnected(ComponentName name){

}

};

三,广播

在Service中发送广播,Activity中接口广播

Intent intent = new Intent("*******");

sendBroadcast(intent)

private void registerUploadReceiver(){

IntentFilter filter  = new IntentFilter();

filter.addAction("*****");

registerReceiver(StatisticsReceiver, filter);

}

class StatistcsReceiver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent){

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: