- 博客(46)
- 资源 (25)
- 问答 (1)
- 收藏
- 关注
原创 ThreadLocal笔记
在java中,变量值得共享可以使用public static变量的形式,所有的线程都使用同一个public static变量。如果想实现每一个线程都有自己的共享变量该如何解决呢?这个时候就需要用到ThreadLocal了。类ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子可以存储每个线程的私有数据。
2022-02-14 18:07:48
207
原创 jetpack之LiveData
LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。引用自官方文档使用LiveData的优势使用LiveData又以下优势1.确保界面符合数据状态LiveData 遵循观察者模式。当底层数据发生变化时,LiveData 会通知Observer对象。您...
2022-02-13 17:12:08
2059
原创 Synchronized 和 Lock
Sychronized关键字 在java多线程的问题中占有举足轻重的地位。这里记录一些易错的关于Sychronized的知识点。1.一个是对象锁(作用在具体的对象实例上的),另外一个是作用在static修饰的方法addB是类上的,他们两个锁之间不存在竞争的关系,也没有范围大小关系,总之没有半毛钱的关系。获取了对象锁的线程A 调用addA ,不会影响另外一个线程B 获取锁调用addB方法,因为...
2021-10-28 13:34:53
228
原创 Handler 笔记
Handler在Android基本上是无处不在,四大组件通信,我们自己写代码中,线程之间通信,都在用Handler。在面试中Handler也经常被问到的,所以今天特此记录一下。Handler构造函数打开Handler源码,我们可以看到Handler有以下几个构造函数:这里的构造函数 主要可以分为两类:传递参数Looper(下面3个)的 和 不传递参数Looper(上面4个)的。先看不带Looper参数的构造函数:public Handler() { this(n...
2020-06-21 14:44:51
445
原创 Android APK 签名、打包笔记
我们知道,一款Android 要发布的话,必须经过签名,Android目前支持的签名方式包括三种:v1 方案:基于JAR签名。 v2 方案:APK 签名方案 v2(在 Android 7.0 中引入)。 v3 方案:APK 签名方案 v3(在 Android 9 中引入)。为了最大限度地提高兼容性,请按照 v1、v2、v3 的先后顺序采用所有方案对应用进行签名。与只通过 v1 方案签名...
2020-06-08 22:06:02
5090
原创 Gradle Transform 与 字节码插桩
gradle用于构建项目,其plugin插件用于完成一特定功能,而有些时候我们希望在插件中完成对项目内容的一些更改,这就需要我们在gradle构建过程中,获取到源文件才能进行,所幸的是,gradle plugin从1.5.0版本开始,为我们提供了Transform功能,它可以以输入输出流的链式方式,供我们对源文件进行处理。Transform功能的结构:QualifiedContent...
2020-04-22 15:06:42
1857
3
原创 Gradle 自定义插件
上一篇文章提到了gradle的相关知识和自定义task,这一节我们就讲一下自定义插件的开发。自定义插件在Android中的使用尤为重要。 在gradle的相关文档中说,我们可以构建插件的相关代码,直接卸载构建脚本中,无需任何操作就能够编译使用插件。但是这样的话,该脚本插件只能在当前构建脚本中可见,不能外部可见,也不能重用。所以要达到重用的目的,就需要将其编写为插件。bui...
2020-04-21 13:51:44
614
原创 Gradle开发之Android项目中的gradle
作为一个Android开发人员,相信大家每天开发都在与Gradle打交道,它是一款非常优秀的构建工具。基于Groovy语言实现,但是又与java完全兼容,在编写Gradle脚本的时候,完全可以按照java的语法去写相关的类,变量,方法。Gradle 项目构建生命周期Gradle 的生命周期分三个阶段,初始化阶段,配置阶段,执行阶段.那这三个阶段在做什么事情呢?请看每个阶段的描述...
2020-04-20 14:26:18
552
原创 Android 增量更新
随着社会的发展,虽然对于一个用户而言,流量不值钱,每个用户的手机会有多少个G的流量,或者不限制流量,或者经常使用wifi。所以目前在Android端流量的优化,可能没有那么重要了。但是当我们的用户更新一个app的时候,每次都需要下载一个完整的app有可能要等几分钟,像王者荣耀这样大型的游戏app,下载完整的app至少几百兆,但是我们新的补丁包有可能只有几十兆,或者几兆,这样让用户使用新的功...
2020-04-13 15:15:21
557
原创 Kotlin实战笔记--类,接口,对象
Kotlin定义类的结构Kotlin的类和接口与java的类和接口还是有一点区别的。例如,接口可以包含属性声明。与java不同,Kotlin的声明默认是final和public的。此外嵌套类默认并不是内部类:它们并没有包含对其外部类的隐式引用。Kotlin中的接口 Kotlin的接口和java8中的相似,它们可以包含抽象的方法的定义以及非抽象方法的实现,但是它们不能包含任何状态。...
2020-04-12 19:00:46
563
原创 线程池
在java中,使用线程来执行异步任务。java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建和销毁将消耗大量的计算资源。同时,为每个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用崩溃。因此线程池就诞生了。相关类和接口 与线程池相关的主要有以下的类和接口:Executors 工厂类,里面提供许多封装好的创...
2019-11-10 16:07:05
253
原创 Android 注解和注解处理器 的使用
注解简介注解(Annontation),Java5引入的新特性,位于java.lang.annotation包中。提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。是一种说明、配置、描述性的信息,与具体业务无关,也不会影响正常的业务逻辑。但我们可以用反射机制来进行校验、赋值等操作。注解的定义定义一个Annotat...
2019-11-05 19:36:46
1238
原创 Android换肤技术
所谓换肤技术,就是用户可以根据自己的喜好,选择自己喜欢的并且APP提供的颜色,背景图片,作为整个app的主题背景颜色,或者字体颜色等等...满足用户的需求。APP换肤 主要分为2种:1.内置换肤:就是将换肤所需要的图片资源,或者颜色资源,在打包的时候,打包到APK当中2.皮肤包换肤:就是 当用户选择某一款皮肤的时候,动态从服务器下载打包好的皮肤包,然后解析出相应的图片资源...
2019-11-01 18:27:51
348
原创 Android插件化的实现(3)--LoadedApk式插件化的实现
上面介绍了关于插桩式插件化实现和Hook式插件化的实现,也分析了他们的优缺点。这次来讲解一下自定义LoadedApk式的插件化实现。 LoadedApk形式的插件化实现大致流程和需要反射的点如下图(我是基于Android28的sdk下反射):流程:1.首先还是需要Hook AMS 相关的检查,将需要启动的插件的Activity 替换成能够绕过AMS检查的Pr...
2019-10-26 22:25:12
847
2
原创 Android插件化的实现(2)--Hook式插件化的实现
插桩式的插件化实现,每次都必须使用宿主的Context ,去加载插件的layout.xml,activity,service,对于静态广播的注册使用到反射,需要对不同版本的sdk的进行兼容。 Hook式插件化的实现,就是通过Hook的方式,用动态代理拦截系统的源代码实现,加上自己的处理逻辑。以一个简单的小例子,来说明动态代理的原理实现 以及 逻辑。public cl...
2019-10-26 22:24:22
462
原创 Android插件化的实现(1)--占位式(插桩式)插件化的实现
什么是插件化? 插件化出现的主要原因,我个人认为是解决了越来越大的庞大的APK的体积,用户在下载一个APK的时候,只需要将主要的功能打包到APK中,当用户要使用某些不常用的功能的时候,我们就使用动态下载APK的方式,供用户使用,其实这就是插件化的技术。其实通俗的讲,就是一个运行的APP(宿主),去加载没有安装运行的APK文件,可以使用该APK文件里面的功能。如下图所示。占位...
2019-10-26 22:16:03
544
原创 AndroidUI 自定义View--任意系统控件上添加自定义属性
看到标题,我们想到,如果要在系统控件上加上自定义属性,并且能够解析出来。这好像有点不可能。我们经常容易想到的是,自定义一个View来继承系统控件,然后解析自己写的attr,这样可以达到使用自定义属性,但是此时就不是系统控件了,是自定义控件了,我们想要实现的效果是下面这样的:<ImageView android:id="@+id/iv_0" ...
2019-05-19 17:51:16
1175
原创 Android的View 相关记录
View在Android是所有控件的基类,他是一种界面层的控件的一种抽象,代表了一个控件。除了View外还有ViewGroup,里面可以包含许多控件。在Android中,我们可以将View的这种关系称之为控件树,类似数据结构中的树,具有一定的层级关系。View的位置参数View的位置主要由它的四个顶点来决定,分别对应于View的四个属性:top,left,right...
2019-05-12 22:06:50
194
原创 Android UI 之 Region, SVG,不规则自定义控件
Region Region就是区域,范围的意思,代表Android话不中绘制的某一个区域,它有一些适用的API,在自定义控件,或者不规则控件的点击事件中,非常有用。 Region有四个构造函数,这都很好理解 public Region() { //创建一个空的区域 .... } public Region(Regio...
2019-05-12 22:03:15
810
原创 AndroidUI之PathMeasure,PathEffect
PathMeasure顾名思义,它是一个path(路径)的测量工具。我们可用通过它的一些API得到当前路径上某个点的坐标,还有夹角等信息,这些信息在自定义控件中都很适用。PathMeasure都会和一个或者多个Path结合使用。先看常用的API。构造方法 //构造方法1 public PathMeasure() { mPath = null; ...
2019-05-12 22:00:50
497
原创 AndroidUI之Matrix
Matrix在android开发中,特别是一些高级UI的绘制中,做平移,旋转,缩放,错切操作很是适用,但是其实Android的API中已经帮我们封装好了Matrix的很多方法和操作,现在就想记录一下学习的过程。 打开Android的Matrix的API(我用的SDK版本是28),首先可以看到9个常量: public static final int MSCALE_X = ...
2019-05-12 21:59:30
1087
原创 AndroidUi之Canvas,Path
画布,在我们android的View或者自定义View中占有举足轻重的地位,在android中它的意义也是字面的意思,我们可以通过画笔绘制几何图形,文本,路径或者位图。我们可以将Canvas的API主要分为三类,一类是绘制相关的,例如drawText,drawLine...,一类是变换相关的,canvas.translate、canvas.rotate....,还有一类是状态保存和...
2019-05-12 21:56:40
881
原创 AndroidUi之Paint
Paint意思就是画笔,保存了绘制几何图形,文本,位图的样式和颜色信息。在android的API中Paint类里面存在大量的setter和getter方法,用来获取或者设置我们上面所说的样式和颜色信息。画笔常用的API 和使用方式 private void init(){ mPaint = new Paint(); mPaint.setC...
2019-05-08 22:38:07
438
原创 Application相关之坑
最近在接入腾讯云的维纳斯(长连接,推送)服务的时候,业务需求是,需要用某个接口中间的某个字段来控制服务端是否使用维纳斯服务,如果不使用,就启动我们项目之中原来的心跳,如果使用,就关闭心跳,用维纳斯服务,所以自己做了某个开关控制维纳斯是否可用。但是在实际项目中维纳斯服务总是无缘无故的“服务主动断开”,有时候会主动重连有的时候不会主动重连上,在官网给的demo里面测试不会出现这种情况,经过多方排查,基...
2019-03-21 13:53:11
242
翻译 ConstraintLayout的使用
ConstraintLayout的诞生,是为了解决我们在平常开发中的复杂多层级布局的问题,在一定程度上进行布局的优化。它有些类似RelativeLayout的功能,都是通过View质之间的相对位置或者View相对于父布局的位置来控制的。但是ConstraintLayout比Relative更加的灵活,方便。而且Android studio提供了ConstaintLayout的可视化编辑工具,可以直...
2018-08-26 17:39:39
5555
翻译 ImageView 的ScareType记录
在Android的项目开发,图片是我们项目中占有举足轻重的地位。但是由于Android不同手机的适配,不可能UI设计人员所给的切图在每个手机上都恰到好处的大小。所以此时我们应该善于应用Android系统为ImageView为我们提供的Scaretype属性。科比镇楼,这张图片的原始尺寸2000*1333,相信这个尺寸的图片在任何手机上显示不下。直接来重点。在XML中ImageView 是这么设置的...
2018-05-23 23:22:54
575
原创 关于Scroller ,scrollTo,scrollBy
最近想总结一下,关于View滑动的知识,也为下一篇View的滑动总结记录一下这个知识点点吧。提到这个,先说说Android的坐标系吧。Android中的坐标系 Android中有2种坐标系,分别称之为Android坐标系和视图坐标系。而对应的也有一些相关的方法可以获取坐标系中的坐标值,只有搞清楚这些区别,才能在使用的时候,不至于出错或者得不到你想要的效果。1.Andro...
2018-05-06 15:40:13
1040
原创 关于View的invisible和Gone的区别
先看前几天写的内容的一段XML文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="ve
2017-03-25 21:39:44
1081
原创 移动支付--银联,支付宝,微信(android)
相信大家一定用支付宝支付过你所购买的商品,那作为一个移动开发人员,在这个移动互联网高速发展的时代,作为一名开发人员,我们也有必要了解接触一些移动支付方面的开发知识了。支付宝支付的一般步骤:1.在对应的App(淘宝)中选购商品。 2.生成支付宝支付订单 3.提交订单
2016-12-23 16:00:53
4468
1
原创 View绘制详解
在介绍View绘制之前先来介绍一下LayoutInflater,而介绍LayoutInflater之前,先介绍一种单例实现模式:使用容器实现单例模式public class SingletonManager { private static Map<String, Object> objMap = new HashMap<String,Object>(); ...
2016-12-23 12:01:14
2360
原创 Android 中listView的多个Item复用问题
最近接触到了listView中多个Item复用的问题。listView使我们Android开发中非常常见的一个控件,可以说任何一款应用都会使用到他,所有呢,这个控件也被别人研究的比较多。常用的一般复用方法,大家应该都清楚。convertView的复用,使用ViewHolder,使用LruCache,异步加载等等。这里就是记录我开发当中遇到的listView的多个item复用的方法和一些处理的坑。。
2016-11-01 13:53:15
3912
原创 Android之高斯模糊的记录
最近在开发项目的时候遇到一个UI提出的效果就是PS里面的高斯模糊效果,上图 下面其实是一段文本内容,但是当用户没有获取到某种权限的时候,是不能查看具体的文字内容的(但是又给用户一种下面有文字内容的模糊的感觉)。当用户点击偷瞄
2016-10-29 11:40:15
2497
原创 Android中的Handler解析
提到Handler大家并不陌生,Handler是android给我们提供用来更新UI的一套机制,也是一套消息处理机制,我们可以通过它发送消息,也可以通过它处理消息,它既可以发送消息也可以接收消息。当我们在子线程中对UI进行更改的操作的时候,应用汇崩溃,系统提示我们不能再子线程中进行更新UI的操作。这时候Handler就可以派上用场了。为什么要使用Handler呢,其实谷歌工程师估计考虑到程序员对于
2016-09-12 14:37:35
5379
原创 Android中DownLoadManager的使用
项目本来开始使用的是友盟的自动提示更新功能,现在由于应用市场,系统厂商,运营商等多方面对友盟自动更新服务的限制,友盟将于2016年10月份停止所有应用的自动更新服务,这就让我倒霉了,得自己在客户端写自动更新的功能,目前所用到的是Android中DownLoadManager。DownLoadManager也不是什么新鲜玩意了,从Android2.3(API level 9)开始Android用
2016-09-09 16:04:34
6105
原创 Android评分控件RatingBar的相关问题
RatingBar,Android系统原生的评分控件,类似淘宝一类的电商APP在购买支付,确认付款之后都会有评价和评星级(评分的)功能,也可以用这个去实现。
2016-09-05 13:48:16
3434
AndroidDemo.zip
2020-04-20
SkinChange.zip
2019-10-27
MyEclpse中css文件的引用问题
2014-06-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人