自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android-skin-support换肤原理

Android-skin-support换肤的实现原理

2023-07-26 10:55:05 338

原创 window环境.pk8和.pem合成android系统签名

android系统签名合成

2022-12-05 14:46:41 410

原创 Android跨进程通讯——>Binder

一、前序Android的IPC方式有很多种,市面上Android开发用的比较多的方式是BroadcastReceiver(其他的共享文件之类的非实时通讯的就不要考虑了)。其实我也很好奇,为啥不用最具Android特色的Binder(即AIDL)来实现呢?Binder相对于BroadcastReciver的方式有很多优点:1.BroadcastReceiver效率比较低,不稳定,而且很多手机厂商会对BroadcastReceiver做限制。2.BroadcastReceiver不是可靠连接,有可能广播

2021-06-29 10:43:43 375

原创 Jetpack之一 Lifecycle

导语Jetpack出来也有几年了,平时也是主要使用jetpack来进行开发。我个人理解,Jetpack主要是围绕Lifecycle(生命周期)来进行构建的。所有的一切都包含生命周期,生命周期是通过观察者模式来实现的。但这里和普通的观察者模式不太一。一般的观察者模式是仅通过 被观察者去通知观察者变化,而Jetpack的观察者,不单单可以被观察者去通知观察者,还可以当观察者的生命周期出现变化时去通知被观察者进行解绑。Jetpack部分主要讲:Lifecycle、LiveData、Viewmodel,个人认为这

2021-05-21 15:11:55 178

原创 使用sourceInsight 查看Android Framework源码

随着工作年限的增长,越来越理解Android Framword的重要性。市面上流行框架在变化,但基础知识基础架构是不变的,所有框架都是源自于基础知识。工欲善其事,必先利其器。今天来说说怎么查看Framwork源码。先说说我的需求,先从0到1,方便查看源码即可。后面在考虑安卓模拟器来调试系统源码。其实我们可以在线查看源码(在线源码地址)。优势也很明显,可以实时看到不同版本的源码,实时更新。但是,看起来灰常累,无法进行方法的跳转。下面介绍我们今天的主题,使用source insight来阅读源码。先奉上so

2021-04-25 17:09:54 1147

原创 安卓开发有感

从15年实习就开始做安卓开发,一路走过来也有五个多年头了。这么多年,从一入行就有消息称安卓要被大前端取代,什么H5,RN等等。从一入行,就开始迷茫,要不要换技术学学?要不要换个方向?五年多了,结果安卓还是安卓,曾经的混合开发什么phonegap、hbird等等已经消失的差不多了(可能是我接触的片面性),又有新地 混合开发技术出现。人总是会回想过去,展望未来。从业五年多,已经在四家公司工作过了,即将开启毕业后的第五份工作。简要回顾一下这四份工作。第一份工作是在一家外企,马来西亚的公司(很可惜前两年大中华区已

2021-04-19 17:47:07 369 4

原创 自定义APT终极—>生成有参抽象工程

接着上篇 自定义apt实战之一>抽象工厂在和Java后台的同事聊天的时候,发现他们经常使用Data-Map来存放类名,然后通过反射来初始化。我在想为什么不用抽象工厂呢?抽象工厂和策略反射相比较:优点:抽象工厂无反射,性能相对较高;Data-Map每次增加 一个类,都需要在Data_Map里面进行注册,一不小心还有可能key重复;缺点:抽象工厂强依赖,不符合高内聚低耦合的设计思想;抽象工厂要写很多if-else,不够优雅,每次新增类都要增加if-else;特别是针对我现在工作内容,各种协议,每

2021-04-01 17:44:15 116

原创 自定义apt实战之一>抽象工厂

前面文章写了开始自定义APT之前需要了解的知识,刚开始接触自定义APT的小伙伴,可以看一下我前面的几篇文章:自定义APT之:调试自定义APT基础之:Element自定义APT之:javapoet自定义apt实战之一>Mapcreate接着上篇文章,前面 我们自定义了apt用来生成key-value键值对。这章我们来创建抽象工厂。数据模型中有连个角色:工厂、产品,之前的关系属于生产。先说说抽象工程相对于键值对反射的好处:1.不需要反射,性能相对消耗相对较低;2.低耦合,依赖关系由抽象工厂负责,

2021-02-26 17:55:09 156

原创 自定义apt实战之一>Mapcreate

前面文章写了开始自定义APT之前需要了解的知识,刚开始接触自定义APT的小伙伴,可以看一下我前面的几篇文章:自定义APT之:调试自定义APT基础之:Element自定义APT之:javapoet现在终于可以开始创建自己的apt了。先说一下开始之前的业务背景。在我的日常Android开发中,随着版本的不断迭代,需要对接N多个协议,需要适配N多个界面。在项目初期,使用if-else来进行区分,每个协议里面的又有很多子项。协议的子项通过Map来保存key-value键值对,通过反射来实例化并处理。(这里

2021-02-26 15:12:27 277

原创 自定义APT之:javapoet

javapoet用于在编译时构建生成的java文件。

2021-02-22 17:19:02 183

原创 自定义APT之:调试

工欲善其事必先利其器,在进行自定义APT开始时首先来了解一下如何调试apt代码,步骤如下:1.在Project的gradle-wrapper.properties文件中加入以下代码:org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005-Dorg.gradle.debug=true2.新建Remote:![在这里插入图片描述](https://img-blog.csdnimg.cn

2021-02-21 16:58:13 2942

原创 自定义APT基础之:Element

Element是自定义APT的基础,主要作用是在执行AbstractProcessor时,搜索和解析java文件。本文主要是根据官方API来带大家理解Element。Element位于:javax.lang.model.element包下。先看一下Element的官方解释: Represents a program element such as a package, class, or method. Each element represents a static, language-level

2021-02-21 16:38:46 475

原创 发布自己的开源库

序:开发时间长了,有一些自己开发用的顺手代码。每次用到时都是copy过来显然很麻烦。一直想着把自己常用的一些控件或者功能模块整合一下,打包到仓库里,用到时可以直接依赖。而且牛人都是自己开发框架和开源库。为了技术进步和后面用着方便。上传的三种代码仓库:本底Maven仓库、局域网Maven仓库和远程jcenter仓库1.本底仓库:这个比较简单,做的时候也没遇到啥坑。简单说一下流程:①在module的build.gradle文件增加以下内容:apply plugin: 'maven'uploadAr

2020-12-15 15:58:41 359

转载 android framework源码目录介绍

  简介之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了。记录1、下载源码,目录如下:2、Android系统的层次如下:3、项目目录简单分析如下:4、telphony目录文件描述CellIdentityCdma//描述电信通信标识CellIdentityGsm描述移动通信标识CellIdentityLt...

2020-08-13 14:41:11 1990

原创 C语言--结构体

序:从事安卓开发也快5年了,上份工作是关于人脸识别的定制化的板子,在工作过程中要用到很多关于linux的知识。了解linux,也就更理解了上层安卓java层的实现。之前遇到需求,执行shell命令,java执行20到30毫秒,严重影响效率,然后有底层的同事提供接口,执行只需要1毫秒,没错,就有这么大的差别。之前就一直想往安卓底层学习,通过上份工作,更对C和C++的产生了浓厚兴趣。和安卓相关的,就从NDK开始了。计划先学C语言,然后C++,然后JNI,最后NDK.感觉废话太多,进入正题1.结构体的理解:

2020-08-12 17:05:57 167

原创 android movie实现gif (包含sdcard)加载

android movie实现gif (包含sdcard)加载首先先说说使用movie加载gif的弊端:1.需要关闭硬件加速,这就意味着对CPU的 消耗要明显变大,之前用的CPU全志T501(很低端,性能不行),CPU消耗可以占到25%,当然,对于现在 的主流 手机来说,小菜一碟。2.只能加载gif,不能加载其他类型的图片;优点:1.相比较于glide(glide加载gif很鸡肋),gif图运行流畅;下面直接上代码:/** * @author : wengliuhu * @version

2020-08-07 08:51:25 473

原创 Android 多线程同步

序言:Android开发,对高并发等并没有太高的要求,所以本文介绍主要针对安卓开发过程中的同步问题。目录:1.synchronized(重点讲解);2.Lock锁;3.CountDownLatch和Semaphore;4.java.util.concurrent包下面的集合;5.开发过程中遇到的问题一、.synchronized原理及使用使用:1.用于同步方法:// 同步普通方法 public synchronized String getBusNumber(){

2020-07-01 15:43:18 1213

原创 再看Handler消息传递机制原理

关于handler实现原理的几个问题 源码分析1.消息队列的数据结构和实现方式;2.如何保持线程状态,不被销毁;3.Message如何优先执行以及确保线程安全;4.如何直接在主线程中执行5.关于队列,我常用的实现方式以下将根据源码来具体谈谈这几个问题,源码使用SDK 28。实现原理主要包含下面几个类:MessageQueue:消息队列,在构造方法里初始化Native,持有队列第一个...

2020-01-21 11:26:35 214

原创 自定义字体图标

自定义iconify字体图标框架 GitHub:https://github.com/JoanZapata/android-iconify先说一下使用该库的好处:1.减小apk大小;2.字体图标大小可变,灵活(也可以字体生成drawable);3.不会失真;具体步骤:1.引入material风格(仓库里面的至少引用一个)implementation ‘com.joanzapata....

2019-06-05 10:58:54 523

android-sdk.zip

android 开发用的sdk manager,自己上传一个,用于分享给大家,省的每次安装时都得去找一遍。

2020-07-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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