Service 与 Activity之间的通信新方式
2016-01-26 19:29
225 查看
此处讨论的不是,IPC之间的通信,仅限于同一个app内,Service与Activity之间的通信。
有的时候,可能我们需要在Service里面启动一个Activity去处理一些东西,当处理完成后,需要回调给Service。通常的做法,我们会:
1、在Service定义static常量/方法,然后Activity直接调用
2、在Service里面注册广播,然后Activity里面发送相应广播(最好用local广播)
---其实,最优雅的方式是onActivityResult方式,很可惜,Service是不支持的。
今天,为大家推荐一种新的方式:Messenger方式。
第一步:在Service里面定义一个Handler,在启动Activity时,在Intent里面附带一个
Messenger对象,由于其是Parcelable的,所以可以被传递。
第二步:在Activity里面取出Messenger对象,然后调用Messenger.send方法,发送一个 消息到Service里面的Handler对象里面,只需处理消息就OK。
有的时候,可能我们需要在Service里面启动一个Activity去处理一些东西,当处理完成后,需要回调给Service。通常的做法,我们会:
1、在Service定义static常量/方法,然后Activity直接调用
2、在Service里面注册广播,然后Activity里面发送相应广播(最好用local广播)
---其实,最优雅的方式是onActivityResult方式,很可惜,Service是不支持的。
今天,为大家推荐一种新的方式:Messenger方式。
第一步:在Service里面定义一个Handler,在启动Activity时,在Intent里面附带一个
Messenger对象,由于其是Parcelable的,所以可以被传递。
第二步:在Activity里面取出Messenger对象,然后调用Messenger.send方法,发送一个 消息到Service里面的Handler对象里面,只需处理消息就OK。
相关文章推荐
- android进程间的通信方式AIDL
- Qt之进程间通信(Windows消息)
- java火车站售票系统之多线程并发访问
- hadoop 第一个程序 wordcount 详解
- Swift传值传的是什么
- 如何解决C/C++中stack overflow问题
- MR-5.MapReduce排序
- mysql-otp 驱动中设置utf8mb4
- 设计模式笔记
- MR-5.MapReduce分布式缓存(Distribute Cache)
- windows DOS环境下看星球大战
- Weblogic注册为Windows的系统服务项+删除服务项
- MR-5.MapReduce计数器介绍
- uva 11462 - Age Sort
- pytest相关问题解析
- java线程安全之死锁问题
- ehcache+spring配置
- Excel中的四舍六入五成双
- 关于Bitcode的探索
- 分类器组合方法