关于Android中的service的简单描述
来源:互联网 发布:linux运维岗笔试题 编辑:程序博客网 时间:2024/06/07 05:12
一:Service是什么?
Service是Android系统的组件之一,和Activity,Intent,Conent Provider并称Android四大天王,Service是不可见的,是没有界面的,是在后台运行的,运行在当前程序的进程里面,它的应用场景有很多,比如监视硬件是否被插入(例如usb接口),还有链接服务器刷新最新的数据(比如要做一个股票的显示界面)等等,需要注意的是:服务是运行在主线程里面(main),不可以直接在服务里面进行一些耗时的操作的
二:为什么要用服务?服务和线程的区别?
三:服务的生命周期
Service的生命周期并不像Activity那么复杂,它只继承了onCreate()、onStart()、onDestroy()三个方法
当我们第一次启动Service时,先后调用了onCreate()、onStart()这两个方法;当停止Service时,则执行onDestroy()方法。
这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。
它可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停止自己,只要调用一次stopService()方法便可以停止服务,无论调用了多少次的启动服务方法。
绑定的方式开启服务的生命周期:
绑定的方式开启服务,如果服务不存在,oncreate--->onbind
服务的onstart和onstartcommand方法不会被执行.
解除绑定服务 onunbind()--->ondetroy()
多次绑定服务,服务只会被创建一次,oncreate方法只会被执行一次
多次绑定服务,onbind方法不会被重复调用.
在实际开发的时候,如果需要调用服务的方法,就绑定服务,只能绑定一次
服务只可以被解绑一次,如果用同一个conn对象多次解绑,服务会抛出一次.
两种开启方式的比较:
start的方式开启服务:
服务一旦开启,长期后台运行,服务和开启者(Activity)没有任何的关系,开启者退出了,服务还是继续在后台长期运行,开启者(Activity)不可以调用服务里面的方法.在系统设置界面里面可以观察到
bind的方式开启服务
如果开启者(Activity)退出了, 服务也会跟着挂掉.
开启者(Activity)可以间接的利用中间人调用服务里面的方法.在系统设置界面看不到的.
四:编写步骤:
1. start的方式开启服务 (保证服务长期后台运行)
2. bind的方式绑定服务 (调用服务的方法)
3.unbind的方式解除绑定服务
4. stop的方式停止服务
五:本地服务和远程服务
服务的代码在当前应用程序的内部
服务的代码在另外一个应用程序里面
绑定远程服务的详细步骤:
1.跟本地服务的代码编写是一样.
2.远程服务的接口定义文件.java--->.aidl
3.把接口定义文件的访问修饰符全部删除 public private
4.原来代理人MyBinder extend Binder implemetIService--> extends IService.Stub
5.先把远程服务.aidl文件拷贝到本地应用程序的工程目录里面,包名一致
6.iService = IService.Stub.asInterface(service);得到远程服务的代理对象
7.通过代理对象调用远程服务的方法.
- 关于Android中的service的简单描述
- 关于Android的Service简单笔记
- Android中,关于service的启动两种方式描述不正确的是
- 关于android Service服务的一些简单应用
- 关于Android数字签名的描述
- 一篇关于RCU的,简单的描述
- 关于Android中的四大组件(Service的开启与关闭)
- 关于Android中的四大组件(AIDL Service的使用)
- 关于集成学习基础的简单描述
- 关于一些定时任务的简单描述
- android service 的简单实例 binder service
- android Service 的简单使用
- android service的简单使用
- android Service 的简单使用
- android Service 的简单使用
- android Service 的简单使用
- 简单了解Android的Service
- Android关于service中的耗时操作
- Codeforces 555B Case of Fugitive 排序+贪心
- php+MySQL基于百度BAE的微信公众平台获取access_token
- HDU---1010-Tempter of the Bone
- GCC系列: Homebrew安装GCC和binutils
- 小贝_mysql select连接查询
- 关于Android中的service的简单描述
- 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
- 基于ZooKeeper的分布式Session实现
- 理解hashcode
- JavaScript为什么会有 undefined值。
- 疯狂Android讲义(1b)-基于监听&回调的事件处理-小结
- appweb初探
- Hadoop2.0安装部署
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置