一,通过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){
}
}