让Activity和Service建立联系(单向通讯)
来源:互联网 发布:如何淘宝购物 编辑:程序博客网 时间:2024/06/14 16:58
1. 我们建立一个自己的Service, 继承于Service类
public class ContentParseService extends Service
2. 由于Service和Activity通讯是通过Binder来进行, 所以需要在Service内部(或者另外一个文件? 为了让这个Binder使用ContentParseService的相关变量/方法, 还是将它放在Service内部吧)来实现一个自己的Binder, 当然也是继承于Binder.
public class CommunicateBinder extends Binder
3. 如何使用Binder呢? 可以在ContentParseService内部声明一个CommunicateBinder变量:
private CommunicateBinder mCommBinder = new CommunicateBinder();
4. 然后你就可以在CommunicateBinder内实现提供给Activity的公共方法, 比如:
public class CommunicateBinder extends Binder{public void getHomePageContent(){// do something here}}
5. 那么Activity端怎么使用呢? Activity和Service通讯是通过一个ServiceConnection的类来进行的, 那么我们可以这样来定义:
private ContentParseService mContParseBinder = null;private ServiceConnection conn = new ServiceConnection(){@Override public void onServiceConnected(ComponentName name, IBinder service) {mContParseBinder = (ContentParseService.CommunicateBinder)service;// do something here, //建立了联系后, 就可以使用ContentParseService的方法了, 如getHomePageContent(), like this:mContParseBinder.getHomePageContent();}@Override public void onServiceDisconnected(ComponentName name) { // do something here }};
6. 光定义了ServiceConnection变量还不行, 还需要一些额外的动作让Service和Activity建立关系, 这里我们就使用Intent来实现, 在Activity中:
/* 启动解析服务 */ Intent contentParseService = new Intent(this, ContentParseService.class);//ContentParseService.class这个是前面我们定义ContentParseService类的类名 + class this.startService(contentParseService);//Context类型中可以使用this, Activity属于Context的一种//或者使用 Intent bindIntent = new Intent(this, ContentParseService.class); bindService(bindIntent, conn, BIND_AUTO_CREATE);//conn是前面定义的变量, 也就是ServiceConnection
关于startService和bindService的区别, 烦请去Google了, Baidu也是可以, 虽然不太准确
7. 基本上, Activity和Service就这样建立了联系, 注意, 我们这里建立的Service和Activity属于同一个UI线程, 不要在Service中做耗时的操作, 如果要, 那么请在Service中建立线程来进行, 或者使用远程Service(使用AIDL, 这样Service就和Activity属于两个进程了, 但是没有必要这样做吧, 重新启动一个进程, 系统又增加了负担).
0 0
- 让Activity和Service建立联系(单向通讯)
- Service和activity如何通讯
- service和activity之间通讯
- android service和activity的通讯
- android service和activity跨进程通讯
- android service和activity跨进程通讯
- activity service 通讯
- Service和Activity通讯的3种常用方式示例
- 在Activity和Service通讯中使用LocalBroadcastManage
- Activity和Service之间的通讯(下载的例子)
- Service和Activity通讯的3种常用方式
- 【Android 开发教程】在Activity和Service之间建立链接
- Fragment和Activity通讯
- 单向联系
- 单向通讯
- Activity与Service之间的通讯机制
- Messenger 实现Activity与Service通讯、进程通讯
- android中服务的使用 与 Activity和Service的通讯
- hadoop学习笔记
- web报表工具FineReport常用函数的用法总结(数学和三角函数)
- Android 开源库获取途径整理
- 意想不到的有趣linux命令
- hihoCoder hiho一下 第四十一周:骨牌覆盖问题
- 让Activity和Service建立联系(单向通讯)
- Contextual Events简单使用
- SNMP从入门到开发
- 制作git动画网址
- Apache Shiro 简介
- MFC 获取命令行参数方法
- 编辑距离与编辑算法
- setCurrentRowWithKeyValue和setCurrentRowWithKey的区别
- Tomcat 启动报错问题