Service(二):通信
2015-10-14 22:08
190 查看
课程:http://www.jikexueyuan.com/course/715_3.html?ss=1
在activity和service之间通信。
首先使用的是启动服务来通信。注意是如何使用Intent取得EditText的数据并传递给service的,在service是又是如何取出数据的。
在MainActivity中
View Code
总结下启动服务和绑定服务与活动通信的不同:
启动服务是通过Intent对象来取得数据,通过startService启动onStartCommand来过多成Intent对象的传递。
绑定服务是通过binder对象中的函数来完成通信。
前面讲的是从activity中获取数据到MyService,即从UI线程(主线程)从获取数据到子线程中,那么如何总子线程中获取数据到主线程中呢?
示例中在子线程中完成数据的变化,要求将其显示在UI的TextView上。
这里用到了回调的方式。首先定交一个接口CallBack用于向UI中传递变化的数据,在activity中实现接口中的函数,取得数据,并以message的方式传递给Handler,再将其传递给TextView进行显示。
这个过程还是挺复杂的,需要细心体会。
在activity和service之间通信。
首先使用的是启动服务来通信。注意是如何使用Intent取得EditText的数据并传递给service的,在service是又是如何取出数据的。
在MainActivity中
public IBinder onBind(Intent intent) { return new Binder(); } public class Binder extends android.os.Binder{ public void setData(String data){ MyService.this.data = data; } }
View Code
总结下启动服务和绑定服务与活动通信的不同:
启动服务是通过Intent对象来取得数据,通过startService启动onStartCommand来过多成Intent对象的传递。
绑定服务是通过binder对象中的函数来完成通信。
前面讲的是从activity中获取数据到MyService,即从UI线程(主线程)从获取数据到子线程中,那么如何总子线程中获取数据到主线程中呢?
示例中在子线程中完成数据的变化,要求将其显示在UI的TextView上。
这里用到了回调的方式。首先定交一个接口CallBack用于向UI中传递变化的数据,在activity中实现接口中的函数,取得数据,并以message的方式传递给Handler,再将其传递给TextView进行显示。
这个过程还是挺复杂的,需要细心体会。
相关文章推荐
- 九度OJ 1002:Grading
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-04-目标函数
- PostgreSQL json jsonb 支持的value数据类型,如何构造一个jsonb
- 求3-100之间的素数
- Libev源码分析—常用watcher
- 操作系统作业调度实验报告
- 1043_输出PATest
- 支线任务1
- hdu1018Big number(N!的位数-斯特林公式)
- android sqlite的SqliteDataBase.insert()方法,以及如何在事务管理中使用
- MySql学习笔记一
- 安装apache——centos7
- [C++] Memory Retrieval(内存检索)
- C语言中简单的for循环和浮点型变量
- HDFS File System Shell Guide
- ivy相关的文档以及相关例子
- PostgreSQL earth distance module
- 转载一:OSM-Web服务器(一) PostgreSql 配置以及osm2pgsql原始PBF数据导入
- 本博简介
- HDOJ 题目1828 Picture (线段树+扫描线)