android进阶,Android进阶书籍

android进阶-AIDL之接口注册/解注册

AIDL-基本使用

10多年的喀喇沁网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整喀喇沁建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“喀喇沁网站设计”,“喀喇沁网站推广”以来,每个客户项目都认真落实执行。

AIDL-自定义数据类型

AIDL-修饰符in,out,inout

AIDL-重连方法

AIDL-接口注册/解注册

AIDL-连接池

为什么要特意讲解一下接口的注册与取消注册呢,因为在使用AIDL进程跨进程通信的时候, 每次传递的接口对象在内存中的地址都是不一样的 ,所以在注册了之后,无法使用常规的方式去取消, 因为注册和解注册传递的接口地址都不一样 ,系统无法识别

由于上面的问题,AIDL中提供了一个专门解决上述情况的类 RemoteCallbackList ,其工作原理就是:

首先,在前面讲解 AIDL的基本使用 的基础上先增加新的AIDL接口以及注册和解注册方法:

然后就是 RemoteCallbackList 的使用方法了:

注册/解注册很简单

接着是使用接口的方式:

ps: 需要注意的是 beginBroadcast() 方法和 finishBroadcast() 方法 必须配合使用 ,哪怕只是简单的获取集合大小

使用AIDL进行跨进程间通信中,往往我们是需要注册监听,让服务端通知的,但是服务端也必须提供解注册的方法,不然客户端如果离开某个界面不想再接受消息了,虽然直接离开不做处理客户端这边不会出错,但是服务端那边的监听集合还存在之前的,那么就会浪费系统资源,所以有注册监听的时候,最好也要实现解注册的方法

《Android开发艺术探索》

Android进阶解密③—Hook

源码的执行是按照一定流程思路进行的,hook就是在源码的执行流程之间插入一步操作,起到拦截,替换的作用;被改变的对象称为hook点,一般将不易发生变化的类作为hook点;

学习hook必须了解代理模式,可以参考我这篇文章: 反射和动态代理

首先需要知道startactivity的流程: Android进阶解密①——activity的启动过程

我们知道startActivity会通过mInstrumentation这个类,我们可以将这个类作为hook点;

自定义一个Instrumentation,在activity的工作过程中通过反射替换原来的Instrumentation,将原来的Instrumentation传到代理类里面,通过method invoke保证原来的功能不变,然后可以添加自己的自定义操作;

首先拿到activity原来的Instrumentation对象,通过原来的Instrumentation构建出一个InstrumentationProxy对象,将Proxy设置给activity,然后只要在startActivity()之前调用这个方法替换就可以了;

Android进阶——百分比布局及扩展

CSDN博客地址:

一、Android官方推出的百分比布局的使用

1、导入依赖

2、提供了如下的属性

更多请参考: (需要正确上网)

二、Android官方增强版百分比布局的使用——推荐使用

注:在官方的基础上增加了布局PercentLinearLayout,支持百分比设置正方形,未改变官方原有的使用,支持设置字体的百分比,因此更推荐使用

1、导入依赖

2、支持的布局有

3、支持的属性有

4、使用实例

效果图

效果图

效果图

效果好像与直接使用xx%差不多,但是交换过来好像就不一样了

效果图

更多使用请参考:


网站题目:android进阶,Android进阶书籍
转载来于:http://myzitong.com/article/dsgiieo.html