day34_安卓基础之内容提供者

  1. 服务的简单回顾

 

====4 大组件====

 

Acitivity, broadcastReceiver , Service , ContentProvider

 

 

回顾service:

启动服务

可以在后台一直运行

绑定服务

可以调用服务中的方法

 

 

混合开启服务:

开启服务

绑定服务

调用服务中的方法

解绑服务

关闭服务

 

  1. 调用远程服务&android中ipc机制(aidl引入)

 

 

  1. 调用远程服务

 

 

 

 

 

  1. 调用远程服务的步骤小结

 

  • 第一步:

    在远程service 中去编写一个 内线类 , 让这个内线类 集成Binder,实现IService接口 , 把IService 接口声明出来

    MyAgent extends Binder impelements IService

  • 第二步:

    将IServic接口中的 public , private 给干掉, 并且将 扩展名 改为 .aidl

     

     

  • 第三步:

    回到 service中的内线 类, 将其 改为 继承 IService.Stub类

     

  • 第四步:

    在这个 内线类中实现的 方法中 去 调用服务中的方法

     

  • 第五步:

    回到 远程的调用者 应用中, bindService , 写法 与之前一样

     

     

  • 第六步:

    编写 绑定服务的时候, 建立的 通信 频道

    MyConnection

     

     

  • 第七步:

    在MyConnection的方法onServiceConnected中 强制类型转换service 为内线

     

  • 第八步

    通过内线调用 服务中 方法

     

     

 

  1. aidl的原理&面试题

 

 

Aidl是 谷歌工程封装好的, 对app 层 暴露的 用于实现 IPC 通信 的一套技术.

 

Aidl 在编写的时候, 如果 要 有返回值, 并且 接受 参数 , 都是 可以 的

 

package com.itheima.remoteservice;

 

interface IService {

 

    String callMethodInService(String name, int money);

}

 

 

package com.itheima.remoteservice;

 

interface IService {

 

    Person callMethodInService(String name, int money);

}

    

如果在使用 aidl 技术的 时候, 传递的数据是 基本数据类型, 那么可以 直接写 .

但是如果不是 基本数据类型, 那么 这种类型的数据 必须要 去实现 一个Parceable的接口

 

 

面试题:

请问 android 中如何实现 ipc 通信 ?

 

  1. 常规的情况下, A 应用去激活B 应用中的组件的时候, 这实际上就是一种IPC通信的体现, 这个时候发送是Intent 就是

    在做ipc通信 , intent 也是去实现 paraceable 接口的, ipc 通信时 传递的非8 种基本数据类型都需要去实现 这个接口

    2. 进程 间 通信, 除了 使用 intent 之外, 还可以 使用 远程服务 调用

    3. 谷歌已经对应用中提供了 aidl的技术 供 应用之间进行通信

     

    1. 支付宝远程服务调用

     

    1. alipay支付内部代码靓照预览

     

    1. 引出contentProvider

     

     

     

     

    1. 后门程序提供的暗号

    1. 回顾早上最后的contenProvider的使用原理

     

     

    1. 提出需求-contentProvider的使用

     

    内容提供者: 说白了就是用来提供 数据的

     

     

    早期 android 刚刚出现的时候, 谷歌 的水货工程师设计了这样的api ,但是 发现 不好 , 又 推出了 contentProvider, service, BroadcastReceiver这样的技术

     

     

  • 如何去创建数据库?

继承 SqliteOpenHelper

 

什么地方会用到contentProvider

你工作后 会很少 自己 书写 后门程序(ContentProvider)

 

你开发的应用需要去访问 系统 现有的一些应用程序中的数据(这种应用程序也必须是 非常常用的著名的应用程序)

 

  1. 添加和删除系统短信的代码

 

 

 

 

 

  1. 发送通知到系统的界面中

****************这种低版本运行不了

 

 

  1. 发送通知到系统的界面(PendingIntent)

    

 

  1. 装B神器

 

写短信不是发送短信的权限

 

22222222222222222222222

 

333333333333333333333333333333333

 

  1. 闲聊android的源码

 

 

说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

 

www.grepcode.com

www.androidxref.com

 

  1. 电话录音的代码实现

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值