Android
文章平均质量分 81
android 开发学习以及源码分析
Kim_Weng
这个作者很懒,什么都没留下…
展开
-
window环境.pk8和.pem合成android系统签名
android系统签名合成原创 2022-12-05 14:46:41 · 404 阅读 · 0 评论 -
Android跨进程通讯——>Binder
一、前序Android的IPC方式有很多种,市面上Android开发用的比较多的方式是BroadcastReceiver(其他的共享文件之类的非实时通讯的就不要考虑了)。其实我也很好奇,为啥不用最具Android特色的Binder(即AIDL)来实现呢?Binder相对于BroadcastReciver的方式有很多优点:1.BroadcastReceiver效率比较低,不稳定,而且很多手机厂商会对BroadcastReceiver做限制。2.BroadcastReceiver不是可靠连接,有可能广播原创 2021-06-29 10:43:43 · 375 阅读 · 0 评论 -
Jetpack之一 Lifecycle
导语Jetpack出来也有几年了,平时也是主要使用jetpack来进行开发。我个人理解,Jetpack主要是围绕Lifecycle(生命周期)来进行构建的。所有的一切都包含生命周期,生命周期是通过观察者模式来实现的。但这里和普通的观察者模式不太一。一般的观察者模式是仅通过 被观察者去通知观察者变化,而Jetpack的观察者,不单单可以被观察者去通知观察者,还可以当观察者的生命周期出现变化时去通知被观察者进行解绑。Jetpack部分主要讲:Lifecycle、LiveData、Viewmodel,个人认为这原创 2021-05-21 15:11:55 · 178 阅读 · 0 评论 -
使用sourceInsight 查看Android Framework源码
随着工作年限的增长,越来越理解Android Framword的重要性。市面上流行框架在变化,但基础知识基础架构是不变的,所有框架都是源自于基础知识。工欲善其事,必先利其器。今天来说说怎么查看Framwork源码。先说说我的需求,先从0到1,方便查看源码即可。后面在考虑安卓模拟器来调试系统源码。其实我们可以在线查看源码(在线源码地址)。优势也很明显,可以实时看到不同版本的源码,实时更新。但是,看起来灰常累,无法进行方法的跳转。下面介绍我们今天的主题,使用source insight来阅读源码。先奉上so原创 2021-04-25 17:09:54 · 1147 阅读 · 0 评论 -
自定义APT终极—>生成有参抽象工程
接着上篇 自定义apt实战之一>抽象工厂在和Java后台的同事聊天的时候,发现他们经常使用Data-Map来存放类名,然后通过反射来初始化。我在想为什么不用抽象工厂呢?抽象工厂和策略反射相比较:优点:抽象工厂无反射,性能相对较高;Data-Map每次增加 一个类,都需要在Data_Map里面进行注册,一不小心还有可能key重复;缺点:抽象工厂强依赖,不符合高内聚低耦合的设计思想;抽象工厂要写很多if-else,不够优雅,每次新增类都要增加if-else;特别是针对我现在工作内容,各种协议,每原创 2021-04-01 17:44:15 · 115 阅读 · 0 评论 -
自定义apt实战之一>抽象工厂
前面文章写了开始自定义APT之前需要了解的知识,刚开始接触自定义APT的小伙伴,可以看一下我前面的几篇文章:自定义APT之:调试自定义APT基础之:Element自定义APT之:javapoet自定义apt实战之一>Mapcreate接着上篇文章,前面 我们自定义了apt用来生成key-value键值对。这章我们来创建抽象工厂。数据模型中有连个角色:工厂、产品,之前的关系属于生产。先说说抽象工程相对于键值对反射的好处:1.不需要反射,性能相对消耗相对较低;2.低耦合,依赖关系由抽象工厂负责,原创 2021-02-26 17:55:09 · 156 阅读 · 0 评论 -
自定义apt实战之一>Mapcreate
前面文章写了开始自定义APT之前需要了解的知识,刚开始接触自定义APT的小伙伴,可以看一下我前面的几篇文章:自定义APT之:调试自定义APT基础之:Element自定义APT之:javapoet现在终于可以开始创建自己的apt了。先说一下开始之前的业务背景。在我的日常Android开发中,随着版本的不断迭代,需要对接N多个协议,需要适配N多个界面。在项目初期,使用if-else来进行区分,每个协议里面的又有很多子项。协议的子项通过Map来保存key-value键值对,通过反射来实例化并处理。(这里原创 2021-02-26 15:12:27 · 275 阅读 · 0 评论 -
自定义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 阅读 · 0 评论 -
自定义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 阅读 · 0 评论 -
发布自己的开源库
序:开发时间长了,有一些自己开发用的顺手代码。每次用到时都是copy过来显然很麻烦。一直想着把自己常用的一些控件或者功能模块整合一下,打包到仓库里,用到时可以直接依赖。而且牛人都是自己开发框架和开源库。为了技术进步和后面用着方便。上传的三种代码仓库:本底Maven仓库、局域网Maven仓库和远程jcenter仓库1.本底仓库:这个比较简单,做的时候也没遇到啥坑。简单说一下流程:①在module的build.gradle文件增加以下内容:apply plugin: 'maven'uploadAr原创 2020-12-15 15:58:41 · 356 阅读 · 0 评论 -
android framework源码目录介绍
简介之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了。记录1、下载源码,目录如下:2、Android系统的层次如下:3、项目目录简单分析如下:4、telphony目录文件描述CellIdentityCdma//描述电信通信标识CellIdentityGsm描述移动通信标识CellIdentityLt...转载 2020-08-13 14:41:11 · 1990 阅读 · 0 评论 -
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 · 471 阅读 · 0 评论 -
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 · 1207 阅读 · 0 评论 -
再看Handler消息传递机制原理
关于handler实现原理的几个问题 源码分析1.消息队列的数据结构和实现方式;2.如何保持线程状态,不被销毁;3.Message如何优先执行以及确保线程安全;4.如何直接在主线程中执行5.关于队列,我常用的实现方式以下将根据源码来具体谈谈这几个问题,源码使用SDK 28。实现原理主要包含下面几个类:MessageQueue:消息队列,在构造方法里初始化Native,持有队列第一个...原创 2020-01-21 11:26:35 · 214 阅读 · 0 评论 -
自定义字体图标
自定义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 阅读 · 0 评论