Android Service总结
来源:互联网 发布:域名服务器所在地查询 编辑:程序博客网 时间:2024/05/21 09:56
参考文章
Android总结篇系列:Android Service
【Android】远程服务(Remote Service)的使用
Android四大组件:Service服务史上最全面解析
startService与bindService的区别
为什么要有Service
在现实世界的工作中,我们做一件事情的完整过程:领导指示做什么事、去执行、保存成果、报告完成,抽象之后:交互、执行、存储、通信四个部分组成,Android四大组件就是干这个的,当然,Activity除了可以完成交互任务,也可以做事情;数据共享不只有ContentPovider一种方式;组件之间通信可以有很多种实现如EventBus。但是涉及到跨进程(不同APP)的视图调用、数据共享、消息通信和业务执行,使用这四个组件就非常有必要了。Service是Android四大组件之一,它的主要任务是做事情(苦力)!所以Service是必须的:
Activity==交互:用于和用户交互;
Service==做事:属于Android中的计算型组件,不依赖于用户可视的UI界面,提供需要在后台长期运行的服务(如复杂计算、下载等等)。特点是长生命周期的、没有用户界面、在后台运行;
ContentPovider==共享:用于数据共享(组件之间、线程之间、进程之间);
BroadCast==通信:用于组件之间、进程之间的通知播报。
Service 分类
运行地点分:
本地服务(LocalService)
远程服务(RemoteService)
可见性分类:
前台Service
后台Service
可通信性分类:
可通信的Service
不可通信Service
需要注意的是
1、本地服务是在主线程中,如果有耗时的操作,Service应该开启新的线程去执行;本地服务在APK的主线程结束后肯定会被kill掉;如果我们不手动的结束掉自己的Service,它会一直在后台;
2、远程服务(Remote Service)是独立进程,用于系统服务或者干坏事的.
startService和bindService有很多不同的地方
(1)生命周期不同
请看下图他们的生命周期:
(2)结束方式不同
还是看上图!
startService,有两种方式结束,stopSelf(自杀)+stopService(他杀)。如果有人采用bindService这个服务,必须等到unbindService之后才能stopService。
binService,当所有关联方全部unbindService之后才会结束;即使你用stopService也不行。一个bindService对象结束掉会自动unbindService。
(3)应用场景不同
startService方式无法与Service进行通信,可以通过BroadCast方式解决,交互频繁性能不高;bindService是可以的,如果你需要和Service通信,那么请采用bindService方式,当然你的Service要支持通信才行。
IntentService
RemoteService
未完待续
- Android Service全面总结
- Android service 总结
- Android Service 问题总结
- Android 中的 Service 总结
- android service 总结
- Android Service知识点总结
- android Service总结
- android service 总结
- android service 总结
- Android 中的 Service 总结
- android service全面总结
- android service 总结
- Android Service总结
- Android Service 要点总结
- Android Service总结
- android service总结
- Android Service组件总结
- android service组件总结
- 用库函数实现文件的复制
- Python实现简单的购物过程
- Node.js使用TSL/SSL
- Windows系统中禁止某个软件启动或自启动的方法
- 远程分支的创建和删除
- Android Service总结
- FreeRTOS任务基础知识总结
- linux--学习3
- Eclipse中关于copy qualified name的问题
- OpenCV计算机视觉编程攻略第2版pdf
- 安卓开发之环境搭建
- MSSQL:用opendatasource增删改查SQLSERVER
- 人工智能如何革新医疗
- Windows10使用Anaconda安装OpenCV