Android 开发艺术探索 读书笔记2

五 使用ContenProvider     P106

 ContentProvider是Android中提供的专门用于不同应用之间进行数据共享的方式,从这一点,他天生就适合进程间的通信,它的底层实现也是Binder,使用比BInder简单,主要以表格的形式来组织数据,行对应一条数据,列对应一条记录的一个字段

使用步骤:

1.创建一个类并继承ContentProvider,实现他的6个抽象方法

2.注册创建的Provider类 <Provider .......

   并指明authorities标识,一般命名为  包名.provider;标明 permission com.ryg.PROVIDER

注册完外部程序就可以访问这个contentProvider了。 Uri uri=Uri.parse("content://com.ryg.chapter_2.book.provider");括号内唯一标识了我们定义的Provider 这个标识正好是我们注册时authorities的值。

ContentProvider除了支持对数据源的增删改查这四个操作,还支持自定义调用,这个过程是通过ContenResolver的Call方法和ContentProvider的Call方法来完成的。


六,使用Socket

Socket 套接字,它分为流式套接字和用户数据报套接字两种,分别对应于网络的传输控制层中的TCP和UDP协议。

使用步骤:

1.声明权限  Internet权限和ACCESS_NETWORK_STATE权限  注意:不能在主线程中访问网络。

设计聊天室程序:

服务端:代码P119


七,Binder连接池

AIDL大致流程:首先创建一个Service和一个AIDL接口,接着创建一个类继承自AIDL接口中的Stub类并实现其中的抽象方法,在Service的onBind方法中返回这个类的对象,然后客户端就可以绑定服务端的service,建立连接后就可以访问远程服务端的方法了。

当多个业务模块都需要使用AIDL进行进程间通信时:每个业务模块创建自己的AIDL接口并实现此接口,然后向服务端提供自己的唯一标识和其对应的Binder对象;对于服务端来说只要一个Service就可以了,服务端提供一个queryBinder接口,这个接口能够根据业务模块的特征来返回相应的Binder对象给他们,不同的业务模块拿到所需的Binder对象后就可以进行远程方法调用了。

Binder线程池的作用:就是将每个业务模块的Binder请求统一转发到远程Service中去执行,从而避免了重复创建Service的过程。

使用步骤:

业务模块的AIDL接口定义和实现。

首先,为Binder连接池创建AIDL接口和IBinderPool.aidl(是一个接口)。代码P130

接着,为Binder连接池创建远程Service并实现IBinderPool




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值