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

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


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


三、使用AIDL访问远程服务的步骤
1. 定义服务类
public class ServiceDemo extends Service {}
2. 注册服务
<service android:name="com.itheima.remote.ServiceDemo">
        <intent-filter >
            <action android:name="com.itheima.remote.SERVICE"/>
        </intent-filter>
     </service>
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(系统服务的名字)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值