A Leaf


  • 首页

  • 标签

  • 归档

  • 搜索

动态代理及原理思考

发表于 2018-03-11

动态代理基础

动态代理是在程序运行时动态创建一个代理类,实现的过程和静态代理一致,只是它是由反射实现的, 是AOP的基础

动态代理类不会继承被代理类的接口,而是实现InvocationHandler ,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class OwnerInvocationHandler implements InvocationHandler {
private PersonBean personBean;

OwnerInvocationHandler(PersonBean personBean){
this.personBean = personBean;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
try{
if(method.getName().startsWith("get")){
return method.invoke(personBean,args);
}else if(method.getName().equals("setHotOrNotRating")){
throw new IllegalAccessException();
}else if(method.getName().startsWith("set")){
return method.invoke(personBean,args);
}
}catch (InvalidParameterException e){
e.printStackTrace();
}
return null;
}
}

我们关注的就只是invoke方法和被传入的被代理对象personBean

阅读全文 »

Gradle统一依赖

发表于 2018-03-11

在工程根目录下创建config.gradle文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//定义support包的版本号
def supportVersion = "27.1.0"

ext{
//定义各版本号
configs = [
compileSdkVersion: 27,
buildToolsVersion: "25.0.2",
miniSdkVersion: 17,
targetSdkVersion: 27
]

libraries = [
appcompat : "com.android.support:appcompat-v7:${supportVersion}",
cardview : "com.android.support:cardview-v7:${supportVersion}",
recyclerview : "com.android.support:recyclerview-v7:${supportVersion}",
preference : "com.android.support:preference-v7:${supportVersion}",
supportv4 : "com.android.support:support-v4:${supportVersion}",
design : "com.android.support:design:${supportVersion}",
palette : "com.android.support:palette-v7:${supportVersion}",
constraintLayout : "com.android.support.constraint:constraint-layout:1.0.2",

okhttp3 : "com.squareup.okhttp3:okhttp:3.10.0",
okhttp3Logging : "com.squareup.okhttp3:logging-interceptor:3.10.0",
gson : "com.google.code.gson:gson:2.8.2",
retrofit : "com.squareup.retrofit2:retrofit:2.4.0",
converterGson : "com.squareup.retrofit2:converter-gson:2.4.0",
adapterRxjava : "com.squareup.retrofit2:adapter-rxjava2:2.4.0",

glide : "com.github.bumptech.glide:glide:3.7.0",
rxjava : "io.reactivex.rxjava2:rxjava:2.1.9",
rxandroid : "io.reactivex.rxjava2:rxandroid:2.0.2",
fastjson : "com.alibaba:fastjson:1.2.17",
stetho : "com.facebook.stetho:stetho:1.3.1",
stethoOkhttp3 : "com.facebook.stetho:stetho-okhttp3:1.3.1",

rxlifecycleComponents:"com.trello.rxlifecycle2:rxlifecycle-components:2.2.1",

butterknife : "com.jakewharton:butterknife:8.6.0",
butterknifeCompiler : "com.jakewharton:butterknife-compiler:8.6.0",

slidr : "com.r0adkll:slidableactivity:2.0.6",
eventbus : "org.greenrobot:eventbus:3.1.1",
eventbusCompiler : "org.greenrobot:eventbus-annotation-processor:3.1.1",

junit : "junit:junit:4.12"
]
}
阅读全文 »

Gradle/Groovy一览

发表于 2018-03-10

参考资料

  • Gradle Plugin 用户使用指南
  • [Android Studio 自定义Gradle Plugin][https://www.jianshu.com/p/af2b0a43133f]
  • Gradle 入门–只此一篇
  • 给 ANDROID 初学者的 GRADLE 知识普及
  • 深入理解Android之Gradle
  • 重新认识AndroidStudio&Gradle
  • Gradle入门系列
  • 官方文档 https://docs.gradle.org/current/dsl/
  • api文档: http://www.groovy-lang.org/api.html
    阅读全文 »

Stetho使用技巧

发表于 2018-03-04

Stetho是Facebook开源的一个Android应用的调试工具
使用很简单而且也有很多资源介绍

参考资源

Android开发调试神器Stetho介绍-只有你想不到没有你看不到

使用步骤

1. 项目添加依赖。

1
2
compile  "com.facebook.stetho:stetho:1.3.1"
compile "com.facebook.stetho:stetho-okhttp3:1.3.1"

如果使用了okhttp,则需要添加第二个依赖

阅读全文 »

在 Windows 平台上打造出你的 Linux 开发环境

发表于 2018-03-04

资料:

  • 在 Windows 平台上打造出你的 Linux 开发环境
  • Cmder简单使用小结
  • Win下必备利器之Cmder

Cmder

官网地址: http://cmder.net/
cmder有两个版本,mini版和full版
mini版本,就几M大小,这个也就用来替代windows的cmd
full版本比较大,100多M,模拟了一些常用linux命令(比如ls、cat、more、cp、mv、rm、find、grep等),自带git,而且自带vim。(如果已经安装了git for windows可以只使用mini版,但是要把git的src/bin添加到path中去)

阅读全文 »
1234
A Leaf

A Leaf

16 日志
10 标签
GitHub
© 2019 A Leaf
本站访客数:
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4