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){
}
}
在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){
}
}
相关文章推荐
- Unique Binary Tree
- @ResponseBody注解与JSON
- Linux文本处理工具集锦
- Android:EditText 多行显示、属性汇总、族谱
- 计算及清除缓存类
- Dubbo Multicast 注册中心即相关代码实现
- C# Linq获取两个List或数组的差集交集
- [LeetCode]-algorithms-Reverse Integer
- Servlet,过滤器,监听器,拦截器的区别
- 数据库增量备份和差异备份的区别
- 测试手机端APP时,模拟网速慢的情况
- 关于javascript中的return
- 推荐系统(1)--splitting approaches for context-aware recommendation
- ReadWriteLock和ReetrantLock的区别
- leetcode 29. Divide Two Integers
- Qt示例总结
- c#+windows环境 编写mysql集群服务
- CGI和Servlet
- Linux下安装Tomcat
- 【转】Android PullToRefresh (ListView GridView 下拉刷新) 使用详解