将模块service化的好处
2016-03-09 08:04
183 查看
蓝牙的所有操作最好都封装成一个service,好处是相对独立,作为一个service组件,可以指定所运行的进程,所有实现彻底和外部解耦,不管是同进程还是跨进程调用对外接口是不变的。因为APP中可能拆分成多个进程,这些进程对service的访问是统一的,不管和service是不是在同一个进程。另外放在一个service里可以保持数据只有一个操作对象,调用方来自多个进程,但是最后操作数据的只有service进程本身。如果没有service化,只对外提供一个接口,那么操作数据的进程可能有多个,会出问题的。还有一个好处是service作为一个组件即使APP在后台系统也不会轻易杀掉进程,如果接口没有依托于任何组件,则当APP是空壳时很容易被杀掉。
如果不这样做,会出现的问题是,如果APP拆分成了多个进程,那样对外接口也需要改动成支持跨进程的,包括传输的数据是否支持跨进程也要考虑。比如之前要返回gatt,如果是同进程这个gatt进程内传递是没有问题的,但是现在跨进程是无法传递gatt的,因为既没有实现parcelable也不是Binder。接口改动后第三方也要跟着改动,这是很麻烦的。
总结一下,以后这种比较独立的模块最好都放在一个service中,并且要预想到可能会支持跨进程的。这种service化可拓展性、稳定性和灵活性都会更好。
如果不这样做,会出现的问题是,如果APP拆分成了多个进程,那样对外接口也需要改动成支持跨进程的,包括传输的数据是否支持跨进程也要考虑。比如之前要返回gatt,如果是同进程这个gatt进程内传递是没有问题的,但是现在跨进程是无法传递gatt的,因为既没有实现parcelable也不是Binder。接口改动后第三方也要跟着改动,这是很麻烦的。
总结一下,以后这种比较独立的模块最好都放在一个service中,并且要预想到可能会支持跨进程的。这种service化可拓展性、稳定性和灵活性都会更好。
相关文章推荐
- Python多进程编程
- bzoj2748
- Enumeration cannot be resolved to a variable
- Android 五大布局
- 验证码程序Demo
- 验证码程序Demo
- 我是一只IT小小鸟观后感
- ISO/OSI参考模型,7层网络模型总结
- PHP网站从wamp下转到mamp下遇到的问题
- Spring 实践 -IoC
- Spring 实践 -IoC
- Spring 实践 -IoC
- bzoj1088
- poj 1874 Tram
- Android下打印调试堆栈方法
- 一个帖子学会Android开发四大组件
- HDU 4847 Wow! Such Doge!
- android 系统内存检查
- Decimal To Fraction 小数转换成分数
- 怎样计算C++继承、虚继承、虚函数类的大小