- 博客(16)
- 资源 (6)
- 收藏
- 关注
原创 EventBus手动实现
0、手写EventBus运行效果:从MainActivity跳转到SecondActivity,在第二个页面中点击“发送消息”后,在MainActivity中接受到消息并setText改变文本内容:一、EventBus相关概念原理:二、EventBus执行流程三、手写eventbus,分为两大步骤步骤一:EventBus事件注册register流程将带有注解su...
2020-01-31 18:33:23 526
原创 Android在子线程中操作UI:弹出Toast、改变TextView内容
问题一:子线程能弹Toast吗?相信很多安卓开发者都坚信一个信念,那就是子线程不能更新UI,不能进行UI操作,写此文之前,我自己也是这么坚信的,直到我注意到一个异常,才引发我对子线程不能更新UI有了新的认识。这个异常是在我在子线程里面不小心弹了一个Toast引发的,该异常相信很多朋友都见过,就是java.lang.RuntimeException: Can't create handle...
2020-01-31 12:46:26 4363 2
原创 java父类获取子类对象、调用子类方法
1.Java中父类能调用子类的方法吗?答案:能1.1 实现方式描述(1)父类中的抽象方法让子类实现并返回(2)通过注册监听,然后通过回调接口调用子类相关方法(3)在父类中通过反射调用子类的相关方法(4)在父类中直接new子类相关对象或者通过构造函数传入子类对象,然后调用其方法(5)将子类相关方法声明为static,在父类中调用子类的static方法1.2 四种实现方式...
2020-01-17 14:24:39 30511 4
原创 Charles清除代理三种方式
adb设置代理用如下命令:adb shell settings put global http_proxy 127.0.0.1:8888 换成自己电脑的IP地址即可。但是有时我们想抓取HTTPS请求,在设备上输入http://charlesproxy.com/getssl后死活就是不弹出输入证书名字的对话框,这应该是之前设置过代理没有清除造成的。但是如何清除代理今天试了三种方法,成功的是二...
2020-01-14 21:12:05 8224
原创 Android组件化系列之手写组件路由架构篇(下)
上一篇对整个框架结构进行了简单的介绍,本篇将较为细致的介绍下实现细节。一、router_annotation模块主要有两个注解Route和Extra,以一个RouteMeta类;Route注解用来声明路由路径,路径至少是两级,目的是为了将不同module的跳转路径分到不同的路由分组中://元注解@Target({ElementType.TYPE})@Retention(Ret...
2020-01-12 18:06:51 2035
原创 Android组件化系列之手写组件路由架构篇(上)
该框架仿照Arouter实现的,目的是学习Arouter框架。框架的实现主要包括router_core、router_annotation和router_compiler三个部分。router_core:核心api,用来实现路由模块的跳转功能; router_annotation:自定义注解,用来声明需要路由的页面; router_compiler:处理注解,在编译时根据自定义注解生成...
2020-01-12 17:47:56 640
原创 Android 组件通信简述
总所周知,Android提供了很多不同的信息的传递方式,比如在四大组件中本地广播、进程间的AIDL、匿名间的内存共享、Intent Bundle传递等等,那么在这么多传递方式,哪种类型是比较适合组件与组件直接的传递呢。 本地广播,也就是LoacalBroadcastRecevier。更多是用在同一个应用内的不同系统规定的组件进行通信,好处在于:发送的广播只会在自己的APP内传播,不会泄漏给...
2020-01-07 16:04:20 2051
原创 Android组件化系列之动态注解手写注解、注解处理器、及注解工作流程
前言相对于上一节的编译时注解,运行时注解的书写要简单很多,基本思路就是写一个注解标记,通过getAnnotation拿到该类的注解标签做一些我们想要做的事情。一:注解标签@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD, ElementType.TYPE})public @interface BindId ...
2020-01-07 15:14:48 922
原创 AutoService注解无法生成META-INF文件
背景在写注解处理器时,首先就是要继承AbstractProcessor,并且按照如下步骤声明: 需要在 processors 库的 main 目录下新建 resources 资源文件夹; 在 resources文件夹下建立 META-INF/services 目录文件夹; 在 META-INF/services 目录文件夹下创建 javax.annotation.p...
2020-01-07 14:02:57 8237
原创 Android组件化系列之编译期注解手写注解、注解处理器、及注解工作流程
前言为了熟悉组件化通信内部的实现原理,最终完成手写组件化通信,今天我们就需要了解注解、注解处理器他们是如何工作的,因为组件化通信就是利用注解和注解处理器帮助我们完成路由表、路由信息等代码的生成工作。简单说,注解就是一个标记,用来告诉注解处理器凡是用我这个注解标记过的类/属性/方法,这些地方是需要你来帮我做一些事情的,例如生成一些代码。举个通俗的例子,例如流水线上有一些残次品的手机,这时我可以给...
2020-01-06 23:03:25 1047
原创 Android组件化系列之module和application相互切换配置
问题开发时经常是多人协同开发,每个人负责不同的功能,首先由项目主负责人搭建项目框架,之后每个人通过 git 下载项目,然后就开始开发各自的功能。有些独立的功能模块自成一个 module,比如相机相册、二维码等等,这样可以提高工程的复用性,不同module需要使用你的模块直接跳转过来即可。虽然抽出来一个独立的module,但是如何把这个module变成一个独立的application更加方便我们...
2020-01-05 17:04:02 3981
原创 Android studio创建项目图标--三条竖线、咖啡杯
首先我们导入一个工程看下,AS创建项目时右下角的角标有的是一个绿色圆点,有的是三条竖线,有的是一个咖啡杯,三条竖线表示:Android library咖啡杯表示:java library绿色圆点表示:一个APK工程对应的创建如图:创建完成后如下图:...
2020-01-05 10:37:45 2806
原创 项目架构演变--从门面模式到代理模式
我们使用项目演进的方式来看看怎么从最开始原始的代码书写,这种方式代码严重耦合,没有复用性可言,如果我们想加一些统一的请求参数需要在每个地方都修改一遍,工作量是巨大的。那么我们自然就想到了如何在此基础上进行一定的封装,让用到的地方进行统一的请求,而不用重复的代码书写多遍。再到后面我们有更多的切换网络库的需求的话,是如何使用代理模式做到可以随意切换网络库。这三个层次,来看看较好的写法的演进过程。为了简...
2020-01-04 16:27:01 431
转载 Android hook应用
一、认识hook机制Hook又叫“钩子”,它可以在事件传送的过程中截获并监控事件的传输,将自身的代码与系统方法进行融入。这样当这些方法被调用时,也就可以执行我们自己的代码,这也是面向切面编程的思想(AOP)。当然,根据 Hook 对象与 Hook 后处理的事件方式不同,Hook 还分为不同的种类,比如消息 Hook、API Hook 等。1、Java API Hook:通...
2020-01-01 16:10:57 972
原创 Java反射基础以及扩展使用
导语反射是一种具有与Java类进行动态交互能力的一种机制,在Java和Android开发中,一般需要访问隐藏属性或者调用方法改变程序原来的逻辑时会用到,这个比较常见,由于一些原因,系统并没有开放一些接口出来,这个时候利用反射是一个有效的解决方法,这个下文会有案例去讲;另外常见的注解框架也是在运行时利用反射机制来获取的。在模块化和插件化开发中更离不开反射,离开了反射它什么也做不了。一...
2020-01-01 11:44:48 336
Windows环境下32位汇编语言
2016-06-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人