Android中的本地服务、远程服务和系统服务

一、本地服务和远程服务
本地服务 --local service:服务运行在当前的应用程序里面
远程服务 --remote service:服务运行在其他的应用程序里面


二、重要的概念
* 进程:所谓的进程就是指系统给每一个应用程序分配的一块独立的内存工作空间
* IPC:inter process communication  进程间通讯
* AIDL:andrid interface definition language 安卓接口定义语言


三、使用AIDL访问远程服务的步骤
1. 定义服务类
public class ServiceDemo extends Service {}
2. 注册服务

       
           
       

     

4. 修改IService接口的后缀名
5. 去掉IService中的public定义
6. 修改MyBinder的继承关系
/**
* 改变继承的关系,原来是继承了Biner 实现了IService接口
* 但是显示为了满足远程调用,所以应该让其继承IService.stub
*/
private class  MyBinder extends IService.Stub{
@Override
public void callMethodInService() {
methodInService();
}
}
7. 拷贝aidl文件到其他应用中同名包下
8. 绑定服务
public void bind(View v) {
//绑定06中的服务
Intent service = new Intent();
service.setAction("com.itheima.remote.SERVICE");
conn = new MyConn();
bindService(service, conn, BIND_AUTO_CREATE);
}
9. 转化对象,调用服务的方法
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//转化binder对象的时候,使用IServcie。stub的内部方法来转化
binder = IService.Stub.asInterface(service);
// binder = (IService)service; //不允许这么强制类型转化
}

四、重点
1. 绑定服务
2. 绑定服务和启动服务的区别
3. 远程服务--aidl
4. 系统服务


> XXXManager manger = (XXXManager) getSystemService(系统服务的名字)

你可能感兴趣的:(Android,基础知识)