自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android

安卓笔记

原创 CoorinatorLayout协调者布局

CoorinatorLayout是官方号称的一种功能十分强大的FrameLayout(注意最新的实现是ViewGroup),主要有以下的两种基本应用场景: 1. 作为应用的顶层装饰布局; 2. 作为协调有交互依赖的子View的容器。 用法 CoorinatorLa...

2018-05-02 12:08:49

阅读数 1428

评论数 0

原创 Android KTX与Kotlin Android Extensions

Android KTX Android KTX是Google官方推荐的一套便利的Android API扩展函数库。因还处于beta阶段,相关API并不丰富,但既然是出自JakeWharton大神之手,必然是前途无限的。其目前提供了如下的API: Kotlin 扩展特性 ...

2018-03-23 20:17:21

阅读数 495

评论数 0

原创 Javassist基础与实践

概述对于Javassist可理解成在java语言层面上直接操纵java字节码的一种工具。经典应用场景是在构建java代码阶段直接修改字节码,如代码插桩。特点: 更改原有class:增、删和修改class中的字段或方法;修改类的继承结构 新增class:增加字段、方法、构造方法;注意不能新增接口。 ...

2017-11-02 11:18:12

阅读数 1394

评论数 0

原创 Gradle Transform

概述Gradle Transform是Android官方提供给开发者在项目构建阶段即由class到dex转换期间修改class文件的一套api。目前比较经典的应用是字节码插桩、代码注入技术。基础 TransformInput:所谓Transform就是对输入的class文件转变成目标字节码文件,T...

2017-09-25 10:48:43

阅读数 7091

评论数 5

原创 Android Studio插件开发基础

概述 目前IntelliJ IDEA作为一款极其出色的IDE,它可借助于各种灵活的插件来实现强大的功能。虽然Android Studio是基于IDEA,但不能直接在Android Studio中进行插件的开发,幸运的是IDEA的插件是可以兼容Android Studio的。 核心基础 开发...

2017-09-21 18:45:52

阅读数 459

评论数 0

原创 Gradle之多项目与混合构建

Multi-project builds 随着大型的单项目构建发展所面临的各种挑战,多项目构建应运而生。 多项目构建的结构如下:包括一个root顶层项目(包括build和setting脚本),之下再包含一个或多个子项目(包含build脚本):root-project ├── build.gradl...

2017-09-15 15:17:18

阅读数 1407

评论数 0

原创 Gradle基础

Gradle概述Gradle作为一种项目构建的工具,其最大优势是借助于插件可以灵活地实现功能十分复杂、用途极其广泛的项目构建。Groovy与Gradle DSL Groovy作为在java之上设计的脚本语言,相比java,它的代码会更加的简洁优雅(比如方法定义十分简洁,方法的调用可省略圆括号等)这...

2017-09-11 17:39:23

阅读数 668

评论数 1

原创 自定义Gradle插件

Gradle插件 Gradle插件好处:在Gradle构建过程中涉及到的通用逻辑,如果将其封装成插件,就可在多个工程项目构建中复用。 Gradle插件开发语言:Groovy、Java与Scala。不管使用哪种语言,最终都是以字节码的方式被引入Gradle。 Gradle插件开发方式 Build s...

2017-08-24 20:19:40

阅读数 1352

评论数 0

原创 Groovy语法之闭包

闭包概述 闭包就是一个特殊的代码块 闭包格式 闭包的格式定义如下: { [closureParameters -> ] statements } 示例: { item++ } { -> ...

2017-08-23 19:44:38

阅读数 866

评论数 0

原创 Groovy语法之类

groovy与java的类的区别 groovy与java的类大同小异,从分类来看:分为普通类、匿名类、抽象类、接口、匿名内部类;从自定义来看:标识符class、访问限定符(public、protected 、private、static),属性与方法的定义等都非常类似。 访问权限的区别:gro...

2017-08-21 15:36:25

阅读数 546

评论数 0

原创 Groovy语法之操作符

1. Groovy的算术运算操作相比Java多了对幂运算的支持,用法如下: 相比Java,Groovy支持**安全运算符**(?.),可有效避免空指针异常。 2. Groovy支持**方法指针操作符**(.&),原理是通过变量来存放某个方法的指针,即可使用这个变量来调用这个方法。 3. 相...

2017-08-17 14:44:25

阅读数 1283

评论数 0

原创 Groovy语法基础

Groovy与Java Groovy是一种与Java非常相似的脚本语言,该脚本语言会被编译成class字节码文件,最终运行于Java虚拟机上。 环境配置 前提是配置好JDK Groovy环境在类Unix上配置,只需以下的几行命令即可: 第一步下载sdkman,这是管理sdk的工具,命令如...

2017-08-09 16:09:24

阅读数 1179

评论数 0

原创 Android Fabric工作原理

Fabric简介Fabric是国外流行的log收集与分析工具,图表数据非常直观,关于其配置详情请看官网。这里主要是分析,Fabric是如何做到上报log的。注意这里涉及的Fabric版本是1.3.10,注意虽然源码是一直在变化,但原理是万变不离其宗的。 工作原理 Java异常处理流程可以简单总结成...

2017-08-09 10:20:32

阅读数 3602

评论数 0

原创 Realm源码分析之自动更新原理

Realm的Model的自动更新机制是比较有趣的特性,如下自动更新代码:

2017-08-02 19:47:43

阅读数 856

评论数 0

原创 Realm源码分析之copyToRealm与copyToRealmOrUpdate

1. **copyToRealm与copyToRealmOrUpdate:前者是给未指明主键的model使用的,后者则是给指明主键的model使用。** 2. **copyToRealm对应无主键参数的createObject,区别是copyToRealm会复用Realm缓存的model示例,...

2017-07-28 16:14:44

阅读数 2377

评论数 0

原创 Realm源码分析之Writes

上篇是Realm源码分析的开篇,是关于Realm数据库的初始化,关键一点是要抓住RealmProxyMediator这个代理中介者的实例化过程。在理解了Realm初始化之后,接下来就可以追踪Realm数据库读写等操作的源码了。因篇幅限制,先分析Writes。

2017-07-26 15:50:14

阅读数 1132

评论数 0

原创 Realm源码分析之初始化

Realm源码下载 上篇Realm总结是关于Realm的基础使用,可粗略地概括为如下关系图: 在感受了Realm的强大之后,更让人对其背后的实现原理感到好奇,点击下载Realm源码一探究竟吧。 目前Realm java的版本是3.5,如下工程截图,模块简介如下: realm-j...

2017-07-21 22:41:21

阅读数 1847

评论数 0

原创 Realm基础

Realm使用 在工程根目录下的build.gradle添加如下配置: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle...

2017-07-18 18:48:37

阅读数 572

评论数 0

原创 Android AOP基础

AOP概述 AOP,即面向切面编程,是一种编程思想,强调的是在‘某一层面’上编写程序的方式,而这‘某一层面’就被称为切面。 比如打印log,作为调试的一种手段,一般会渗透到项目中的许多地方,那么打印log就可看成是一种切 面,而AOP会指导我们怎样编写打印log会更好。 AOP的主要目标是尽可能...

2017-07-13 22:52:59

阅读数 817

评论数 0

原创 CookieSyncManager与CookieManager

Cookie 什么是cookie:最理解就是http服务衍生出来的一种特殊的浏览器的缓存,特点是具有时效性、账户相关性、存储在客户端等。 作用:作为客户端的用户认证的通行证,比如服务端可以通过cookie来区分到底是哪个用户。 Android中Cookie的管理相关:说到cookie的管理,其实本...

2017-07-13 18:58:26

阅读数 9842

评论数 3

原创 Fiddler调试Android APP

Fiddler调试Android APP配置抓取Https请求 首先启动Fiddler4客户端,如下图 选择菜单栏的Tools弹出的菜单栏Telerik Fiddler Options,会弹出如下子窗口 勾选中上图中的Capture HTTPS CONNECTs,其它都如上图的配置 切换到Conn...

2017-07-12 19:56:23

阅读数 1418

评论数 0

原创 Android Instant App

一、什么是Android Instant App 1、简单的理解就是google提出的小程序,大小限制在4M,依赖于google play的服务实现类似于打开网页url的方式来打开小程序。 2、优点:免安装,体积小,借助于Android Studio 3.0和gradle4.0可以在原有项目基础上...

2017-07-04 15:17:32

阅读数 6127

评论数 1

原创 Android Room

官方文档:https://developer.android.com/topic/libraries/architecture/room.html 一、Room数据库框架结构 1、数据实体对象:作为业务逻辑的数据结构组成部分,并且提供标准的get/set方法,如果有必要也需重写equals和has...

2017-06-26 16:02:49

阅读数 2895

评论数 0

原创 JobScheduler工作原理

一、工作流程: SystemServer start JobSchedulerService --> Clinet App getSystemService --> JobScheduler --> Binder --> JobSchedulerService -->...

2017-06-26 10:14:21

阅读数 1477

评论数 0

原创 Android O适配

官方文档:https://developer.android.com/preview/features/background.html#migration 一、从Android O针对服务以及广播这两个组件做了如下的限制 1、前台服务不受影响,但后台服务会被限制。首先需要确定应用是前台应用还是后台...

2017-06-23 10:37:29

阅读数 8976

评论数 0

原创 Android Calendar Provider总结

官方文档:https://developer.android.com/guide/topics/providers/calendar-provider.html 一、什么是Calendar Provider     其实是就是Android专门用于存储用户的日程与日程事件的数据库,通过读写日程...

2017-06-22 11:10:21

阅读数 481

评论数 0

原创 Android Architecture Components

官方文档:https://developer.android.com/topic/libraries/architecture/index.html 官方实例:https://github.com/googlesamples/android-architecture-components 注意:目...

2017-06-20 18:36:04

阅读数 1006

评论数 0

原创 Maven常用命令

mvn clean:删除maven工程下的target目录 mvn compile:编译Java代码,会在target/classes目录生成相应的class文件 mvn package:将target/classes目录下的.class文件打成jar包,事实上该命令包含了compile过程 mv...

2017-06-08 19:02:53

阅读数 263

评论数 0

原创 git同步代码出现的问题

同步代码时出现问题,$ git pull --rebase origin First, rewinding head to replay your work on top of it... fatal: Unable to create 'F:/code/Demo/.git/index....

2017-06-08 18:57:06

阅读数 490

评论数 0

原创 在AppCompatActivity中自定义toolbar出现的问题

使用AppCompatActivity自定义toolbar的问题,布局如下: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l...

2017-06-04 21:10:03

阅读数 460

评论数 0

原创 Android KeyStore总结

一、Android KeyStore的应用 1、存储密匙:Android提供的这个KeyStore最大的作用就是不需要开发者去维护这个密匙的存储问题,相比起存储在用户的数据空间或者是外部存储器都更加安全。注意的是这个密匙随着用户清除数据或者卸载应用都会被清除掉。 2、得益于Android独立的一套...

2017-06-04 21:04:43

阅读数 6937

评论数 0

原创 .gitignore文件配置

一、常见Android项目的.gitignore 今天新建项目的时候发现.gitignore既然不起作用,使用git status命令查看时那是因为暂存状态下的

2017-06-03 10:44:54

阅读数 335

评论数 0

原创 对所有对象都通用的方法

一、覆盖equals时请遵循通用的约定 1、自反性:对象必选等于自身 2、对称性:a.equals(b) 与b.equals(a)结果一致,实例如下 A:"ABc"  B:"abc" A.equals(B) => true(不区分大小写) B.equa...

2016-05-07 22:41:47

阅读数 303

评论数 0

原创 当Activity设置为透明主题时,按Home键,Dialog闪烁的解决方法

1、前提条件: (1)设置Activity的主题为透明主题 (2)弹出对话框 2、问题:按Home键时,Dialog会闪烁,不是自然的退出动画 3、原因分析: (1)Activity设置成了透明主题,没有了正常的退出动画 (2)Dialog依赖于Activity所在的父窗口,Activit...

2016-05-07 22:23:55

阅读数 5016

评论数 1

原创 消除过期的对象引用

一、JVM中的垃圾回收机制虽然会自动回收不再使用的对象,但是其回收机制是有前提的条件的,违背了中前提条件一般就会出现内存泄漏。而处于内存泄漏的对象特点如下: 1、对象可达,即该对象还存在,还可以被访问 2、对象无用,该对象永远都不会再被使用。 二、过期引用 1、定义:永远都不会被解除的引用 2...

2016-04-25 00:05:47

阅读数 740

评论数 0

原创 Java项目重构总结

重构步骤: 一、先建立可靠的测试环境:测试的目的是用于确保重构出来的代码能稳定运行,否则一旦对外发布就会容易出现问题。 总结:单元模块小重构,单元模块测试 二、分解并重组 1、什么情况下需要进行分解 (1)冗长的代码 (2)重复的代码 2、方法 (1)局部变量和参数 (2)变量易名:提...

2016-04-23 23:07:10

阅读数 5398

评论数 0

原创 git reset撤销操作

命令:git reflog 说明:该命令可以查看git历史操作记录,比如commit操作的记录 应用场景:当你命令了git reset回退了某次本地commit之后,因为该commit还没提交到服务器上,你又想恢复到该次commit,就可以使用该命令查看该commit id,然后再执行 git r...

2016-04-18 22:06:21

阅读数 635

评论数 0

原创 单元素枚举类型实现Singleton

1.公有域的singleton写法 public class Apple { public transient final static Apple INSTANCE = new Apple(); public String getApple() { return...

2016-04-17 22:38:33

阅读数 773

评论数 0

原创 adb常用命令总结

在开发Android 的系统应用时,以下adb命令都是比较常用的 1、获取root权限:adb root,获取超级管理员权限       应用场景:访问应用数据(数据库、缓存、文件等),如data/data/包名/目录下的数据 2、挂载命令:adb remount,该命令通常需要取得了root权限...

2016-04-15 23:06:48

阅读数 452

评论数 0

原创 构建器模式

1.问题场景:设计某个类时,需要传入多个构造器参数(如6个参数),且这些参数中有必选参数(2个)和非必选参数(4个),那么该如何设计该类的构造器会更为合理呢? 方案一:重叠构造器模式 方案二:JavaBeans模式 方案三:构建器模式 ... ... 2.重叠构造器模式 (1)形式:先提供一个...

2016-04-14 23:33:34

阅读数 933

评论数 0

提示
确定要删除当前文章?
取消 删除