四大组件之——server(服务)及Aidl(接口定义语言)

来源:互联网 发布:北京大学大数据 编辑:程序博客网 时间:2024/06/05 17:05

四大组件之——server(服务)
1.先理解进程的概念
进程代表不同的应用程序,系统会为每个应用程序创建一个进程和线程(主线程)
2.进程的的分类
①前台进程:foreground process 是用户正在交互,当广播接收者的onreceive的方法执行
②可视进程 Visible process 用户不可以交互 但是可以看得见
③服务进程 Service process 进程里面运行了一个服务 (音乐播放器)
④后台进程 Background process 用户看不见 相当于activity执行了onStop方法
⑤空进程 Empty process 不会立刻杀死 目的是为了 下一次打开速度.
3.服务的入门
服务是在后台运行.和windos下服务类似 activity你大爷—>Service.
① startservice特点
1.第一次启动服务 服务会执行onCreate和onStart方法
② bindservice开启服务特点
bindservice开启服务在后台找不到.相当于开启了一个隐形的服务.更牛一些. 第一次开启服务会执行onCreate方法和onBind方法.
当activity销毁的时候 服务也会跟着销毁. 天龙八部–>乔峰 虚竹 段誉 不求同生 但求同死.
为什么要引入bindservice:目的就是为了调用服务里面的方法.
③使用接口方式调用服务里面的方法
接口好处:接口可以隐藏代码内部细节,让程序员暴漏自己想暴漏的方法.
代码实现步骤
①.定义一个接口 把想暴漏的方法定义在接口里
②.在获取中间人对象的方式上发生了变化
远程服务和本地服务 远程服务: 运行在其他应用里面服务 本地服务: 运作在自己应用的服务

4.aidlaidl是什么 aidl:android interface definition language android接口定义语言aidl
怎么用
实现步骤
1.直接main目录下创建一个aidl文件 点击同步按钮 让系统帮助我们生成一个iservice.java文件
2.在iservice.java文件里面系统会自动生成一个stub类
3.把我们定义的中间人对象继承Stub
4.直接把aidl文件拷贝到另外一个应用程序 点击同步按钮 直接也会生成iservice文件
5.获取中间人对象的方式不一样了 iservice =Iservice.Stub.asInterface(service);
关于面试的问题: 你了解ipc么 如何实现ipc: aidl
应用场景 新浪:微博 通过aidl接口对外暴漏数据 api开发接口. 天气应用:墨迹天气 支付宝暴漏支付接口 ,斗地主买豆.