自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 android studio 编译乱码的问题

android studio 编译乱码问题

2022-08-05 17:39:54 2504 1

原创 M1 Pro MacBook Pro下载Android11源码

M1 MacBook Pro下载Android源码

2022-07-29 17:00:24 1849 3

转载 https证书、公钥、私钥、签名介绍

转载一篇文章,介绍https证书、公钥、私钥、签名相关的介绍非常形象先粗略解释一下:一、公钥加密假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解.

2021-02-27 17:02:10 2431

原创 重点大学和普通大学相差了三年的距离

先来说说我的经历,我的大学是河北的一所普通的二本院校,学校的建筑系在河北还算有点名气,但是我偏偏学的是机械。毕业以后找工作,当然是要找本专业的工作了,要不大学学了四年不白学了吗,于是经过了几个月的努力终于找到了一份钢结构公司的工作。试用期三个月结束我就离职了,因为这三个月来都是在车间里干的纯体力的活,搬东西,打扫卫生,本来想着试用期结束以后可以进入到部门里面,但是由于竞争太激烈了,很多人有关系不...

2019-09-10 13:28:52 283 1

原创 工作之余找到生活的意义

工作时间久了我总是会偶尔思考这样的问题——“我是不是就这样一直工作到生命尽头”、“每天起床、上班、下班、睡觉再继续这样要持续多久”、“生活的意义究竟是什么”,我相信好多人到中年的打工族都会有这样的困惑。我们想要有属于自己的时间,但是又迫于生计不得不为了挣钱去出卖时间,有时高强度的工作挤压的我们没有丝毫喘息的机会,所以市面上每当出现关于「财务自由」的话题总是非常火,因为我们都期待有一天能够不再受金...

2019-09-09 12:34:31 316

原创 “跳出舒适区”跳出的究竟是什么

现在人们的生活节奏越来越快,每天都在努力的上班挣钱,最让我们感到焦虑的是工作进入了舒适区怎么进行「突围」。工作几年的人们总是在说要跳出舒适区,说着说着好像每当我们进入到舒适区的时候就要必须跳出去一样,一旦不这样做好像就是一种颓废,人生将永远碌碌为为。但是舒适的圈子其实有很多好处,比如人际关系稳定,不用再为维系人际关系花费过多的精力;工作内容熟悉,会有更多的空闲时间,这样说来其实在舒适区其实也没...

2019-09-08 16:36:47 1562

原创 静态代理和动态代理

在插件化技术中,很多功能的实现都使用的动态代理技术,比如VirtualAPK中的替换Service组件的实现就是使用的动态代理,Retrofit里面也使用到动态代理技术来获取接口类的对象,具体的可以看我之前的文章Retrofit的简单使用和源码分析, 如果你还不太清除静态代理和动态代理,就看看今天的文章吧。静态代理指的是代理类在程序运行之前就已经写好了,通过代理类可以调用到目标类中实现的功能代...

2019-09-04 18:01:40 166

原创 Android中的类加载机制

在类加载进内存以后,Android程序是通过ClassLoader类去加载内存中的类,然后进行解析运行的,在插件化技术中,因为需要我们自己去加载插件,所以要了解系统是怎么通过ClassLoader去加载类的,然后在这个过程中找到突破口,将我们的插件APK也加载进去,这篇文章咱们就说说关于Android中ClassLoader的一些知识。类加载流程一个类被加载到虚拟机内存中需要经历几个过程:加载...

2019-08-26 19:44:32 5106 2

原创 debug版apk中出现的Sharepreference的问题

昨天晚上测试反馈给我一个bug,很奇怪之前测试都没问题,为啥突然就不行了(这好像是困扰程序员的世纪难题),最后定位到是因为保存到Sharepreference中的一个标记问题。我多次测试的结果发现非常奇怪,就是按理来说当卸载应用以后,保存到应用私有目录——/data/data/包名/,这个目录下的会删除掉,在我卸载以后去查看确实删除掉了,但是当重新安装以后,还没有启动应用,发现 /data/da...

2019-08-21 14:52:27 240

原创 热修复、插件化、组件化的区别

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明本文连接: https://blog.csdn.net/static_zh/article/details/97391537今天这篇比较简单,但是很重要,主要来说热修复、插件化、组件化这三种技术的区别,只有知道了每种技术的区别在看源码的时候,才知道为什么实现细节会有所不同。插件化和热修复的区别插件化的目的是为了解耦业务模块,将...

2019-08-16 18:09:44 2012

原创 我的写作计划

大家好,最近「从零开始学编程」系列有几天不更新了,一方面是最近工作比较忙,每天只能下班以后抽时间总结,一方面是正在构思后面的Android进阶的文章,也大概写了几篇了,打算最后把它当做一个系列来写,这里我来说说我对整个公众号的写作计划。这里主要是更新关于Android的相关技术,包括Android基础和Android进阶,现在就先计划到了这两块,Android基础的部分就是之前更新的「从零开始学...

2019-08-12 19:40:19 142

原创 Retrofit的简单使用和源码分析

现在比较流行的网络框架一个是OKHttp,一个就是Retrofit,在研究这个两个框架之前,我一直以为它们两个是同等级别的,后来才知道原来OKHttp数据底层的网络访问框架,和HttpUrlConnection、HttpClient同一个级别的,而Retrofit是在OKHttp的基础上进行了封装,比如使用注解来配置参数,可以自定义不同序列化工具,数据返回自动到主线程等。如果我们只使用OKHtt...

2019-07-26 15:21:45 320

原创 李笑来的新书《定投》

笑来老师又出书了,继《韭菜的自我修养》之后,又写了一本关于定投的书,新书上传到了GitHub上,地址如下:https://github.com/xiaolai/regular-investing-in-box书的内容不长,几个小时就能够读完,我读完以后收获很大,但是需要警惕的也不少,其实在读这本书之前,我就告诉自己,要带着批判的眼光去读,要有自己的思考,如果你是一个从16年就跟着笑来一路过来的...

2019-07-23 20:01:13 2033

原创 监听APP中每个Activity的生命周期

在应用开发中我们经常会根据Activity的生命周期做一些操作,但是有时候我们需要对每个Activity做同样的操作,如果深入到每个Activity中去添加具体的代码这样就比较麻烦,还好Android提供了方法在Application中能够监听到应用里面每个Activity的生命周期,代码如下:mApplication.registerActivityLifecycleCallbacks(new...

2019-07-23 11:36:48 861

原创 说说转行

今天这篇不更技术文,打算说说转行的问题。先说说我自己的经历,我大学学的是机械专业,虽然也学C语言的基础课,但是基本上都是玩手机玩过来的。大学毕业以后当然想的就是找本专业的工作,就去了一个钢结构公司去工作,刚毕业的人总是心高气傲的,作为一个大学生怎么能够整天就是干类似打扫卫生的活呢,想要转部门,没成功,所以我就离职了。离职以后我去了天津、北京找工作,最后又回到了河北,经过这一遭我大概知道了自己对...

2019-07-19 19:06:10 268

原创 从零开始学编程——java语法—函数和面向对象

这篇文章咱们接着说java语法的部分,在上一篇文章在举例子的时候说到了一个java程序入口的知识点,java的入口是一个叫做main的函数,那么函数是什么呢,这篇文章中就要说到。除了介绍函数,今天还会简单介绍下关于面向对象的知识,面向对象是一大块,接下来大概会有三篇的样子在重点介绍面向对象的知识,包括什么是面向对象,怎么使用对象,对象的一些特点等等,面向对象可以说是java中最重要的一部分知识,...

2019-07-14 14:41:46 176

原创 从零开始学编程——java语法—代码规范和执行流程

上一篇中介绍了关于java语言的一些基础语法点击这里看上一篇,虽然都举了一些例子,但是对于一个没有一点基础的同学来说,如果想去验证结果还是比较困难,这些代码我写在记事本上怎么运行呢?有什么格式要求吗?有没有高级一点的开发工具呢?在实际工作中使用什么开发工具呢?这些问题都是本篇文章的要说的。怎么运行java代码下面是一个最简单一段java程序class Test{ public stati...

2019-07-11 17:34:00 391

原创 https证书在Android中的使用

我们在使用https访问服务器的时候都需要校验证书,测试的时候为了方便默认信任的所有的证书,但是在上线的时候就需要设置证书了,一个比较简单的方式就是在客户端内置证书,设置给网络框架,比如OKHttp,这样在网络访问的时候客户端就会校验服务器的证书是不是和本地的证书一致。具体代码如下:/** * * @param inputStream 本地证书的输入流 * @ret...

2019-07-09 19:32:10 4193

原创 从零开始学编程——java语法 一 基础语法

上一篇文章介绍完怎么配置环境(环境配置),环境配置好以后接下来就要开始学习Java了,包括java语言的演化过程和java的语法。java语言的演化过程java语言历史比较早,形成了下面的三种技术架构:javaSE:完成桌面应用程序的开发,是其它两者的基础;javaEE:开发企业环境下的应用程序,主要针对web程序开发;javaME:开发电子消费产品和嵌入式设备,如手机中的程序;现在市...

2019-07-08 12:43:28 546

原创 从零开始学编程——环境配置

JDK下载路径:JDK8 下载路径 提取码:430c 昨天说完了变成语言相关的东西,接下来就是专门选择一门语言进行研究了,当初我在学习的时候选择的Android,因为当时移动开发很火,我想找一份高薪的工作,为什么没有选择iOS呢,因为开发iOS应用需要苹果手机和苹果电脑,当时太穷了,买不起,所以就选择了Android,下面我就从入门Android的角度开始来说整个的过程,今天主要来说一下编程环...

2019-06-21 18:21:38 1673 2

原创 从零开始学编程——编程语言

当我一开始想学编程向别人请教的时候,别人都会问你想学哪门编程语言呢?其实我也不清楚到底有什么编程语言,每种编程语言能干什么事,所以就很想知道现在市面上都有哪些变成语言,学了这些语言能够完成什么事情,这篇文章就是讲在编程中设计到的各种语言和每种语言的用处。编程语言的演化过程计算机语言的目的就是和计算机沟通,我们通过计算机语言来向计算机下发指令让它来替我们工作,而我们知道计算机都是二进制的,也就是...

2019-06-21 16:13:02 4396

原创 从零开始学编程——5G时代每个人都要有点编程思维

5G时代今天看了个视频,是体验5G网络的,4G时代下载应用或者视频的速度大概在 1-2M/s ,在5G的网络下基本能够达到90M/s 左右的速度,高网速带来的结果是什么呢?现在能够想到的是比如云服务可能会爆发,图片或者视频保存到本地或者云上已经没有什么区别了,还有就是对无人驾驶的推动,物联网的发展,任何能够联网的东西,通过5G高网速的支持都能够提供更高的互联体验,达到“万物互联”的效果。那么...

2019-06-19 15:06:49 2279

原创 Tinker热修复集成流程及采坑

这篇文章的集成AS版本是2.1.3,gradle版本也是2.x版本,其实2.x版本和3.x版本的gradle差别不是很大。文章就直接写我从开始集成到结束的整个过程,在这中间遇到的问题我会用红色标注出来。集成Tinker当然首先是看官方文档,进入GitHub的Tinker地址tinker去查看官方文档,点击右侧的接入指南,看整个接入的过程,大概浏览了一遍,感觉头大啊,太tm麻烦了,但是没办法不学...

2019-05-15 19:16:09 721

原创 推送集成总结

实现原理不管是小米推送还是华为推送,他们底层都是依赖自己的推送服务进程,推送服务进程是系统进程,所以基本上会一直存活。首先客户端集成提供的SDK以后,会通过进程间通信去推送服务进程中申请token,在申请的时候推送服务就回去检测各种设置,包括是不是自家的手机啊,满足不满足自家的协议啊等,按照文档来都没问题。然后token申请到以后,推送服务进程会通过进程间通信将token传递给APP集成的S...

2019-05-05 16:12:18 259

原创 《Android开发艺术探索》笔记总结——第四章:View的工作原理

这一章中主要介绍了View的相关知识,包括View的基本概念,View的测量流程、布局流程和绘制流程,最终根据这些来实现自定义View。View的加载流程在Activity启动完毕以后,Activity对象创建完毕后,会将DecorView添加到Window中,同时创建ViewRootImpl对象(ViewRootImpl对象是 ViewRoot 的实现),系统将ViewRootImpl 对象...

2019-01-24 17:13:25 265

原创 使用GZIPInputStream读取压缩文件需要注意的问题

Android中读取压缩文件一般都是用GZIP来做,使用方法比较简单,就是使用GZIPInputStream读取,然后用输出流写出来就好了,但是需要注意的一点是,要读取的zip文件的格式也是有要求的,我在windows上使用好压压缩的zip文件是不行的,在使用GZIP的接口读取的时候根本读不出来。后来在Linux上使用 gzip 命令压缩的文件才能正常使用接口读取,仔细想想也能理解,Androi...

2019-01-24 15:13:32 3810

原创 SDK开发的注意事项

1:SDK的最小版本如果集成该SDK的工程设置的最小版本大,导入以后编译失败,所以SDK的minSdkVersion 一定要尽量小2:SDK中是否需要用到6.0以后动态申请权限的问题以集成SDK的工程的targetVersion版本为准。...

2019-01-18 16:57:11 1490

原创 Java虚拟机的内存分配

程序计数器线程私有的。也就是每个线程都会有一块程序计数器内存,它用来记录当前线程字节码文件执行到了哪一行,也就是一个行号计数器。字节码解释器就是通过改变程序计数器的值来选取下一条要执行的字节码指令。同时java的多线程是通过CPU在各个线程的不断切换来完成的,这就需要程序计数器来记录每个线程执行的行号位置,便于CPU下次执行的起点。当线程执行的是本地方法得时候,计数器返回的是0,因为本地方法不...

2019-01-17 19:01:22 199

原创 aar打包注意事项和使用android studio打jar

以前做SDK基本上都是使用jar包,jar包有个弊端,就是只能包含代码,不能包含资源文件,后来出现了aar,aar除了可以包含代码以外,res目录下的资源文件也可以包含进去,这样就方便了很多。但是在aar打包的时候需要注意的是,把一个Library达成aar,lib文件夹下面的jar包是可以包含的,但是在build.gradle,文件中依赖的第三方库是无法打入aar的,如果不知道这点,很容易出现...

2019-01-15 17:38:35 572

原创 使用SQLiteExpertProfessional工具测试SQL语句

先上软件下载链接:SQLiteExpertProfessional打开以后页面如下:创建数据库点击File – New Datebase,输入数据库的名字,创建一个数据库创建表常见表有两种方式,一种是直接在使用SQL语句来创建表,一种是直接右键数据库图标然后选择 New Table。先说第一种方式,这种方式一般使我们实际开发中使用的。第一种方式:点击右边的SQL标签,进入输入 S...

2019-01-11 11:45:36 4096

原创 Receiver向Activity传递数据

今天要写以后测试的例子,需要在受到广播以后将一些数据传递个Activity,除了第三方的EventBus一下子还没想到好的方法,我们知道Activity想其他组件传递数据,简单的就使用Intent携带过去就好了,但是从Receiver向Activity传递数据呢,其实可以使用回调接口。就像Activity中的button也是使用的回调接口,Button类就将用户点击的响应传递个了Activity...

2019-01-10 17:51:23 739

原创 使用Timer、Alarm和Jobschdule完成定时任务的比较

Timer一般是用来做定时任务,它的定时是精确的定时,缺点是当Timer所在的进程被杀死以后任务也会停止。AlarmAlarm是通过系统来维护定时任务,可以在CPU进入休眠模式的时候唤醒CPU来完成定时任务,可以通过设置一段时间以后的定时任务还可以设置以后固定时间点的定时任务,但是最短时间间隔为1分钟,缺点是无法对特定的条件进行任务触发,比如当充电的时候采取做什么动作,同时对于国内的手机来说...

2019-01-10 17:20:57 976

原创 关于Android手机获取SD卡路径的问题

在开发的时候经常会使用到SD卡,比如图片缓存等需要大的存储空间的时候,Android中获取SD卡的接口只有一个String path= Environment.getExternalStorageDirectory().getAbsolutePath();从接口的命名上来看是获取外置的SD卡,从国内手机的发展来看,原来手机本身存储小,都会外置一个SD卡,通过上面的接口获取外置SD卡的路径很容...

2019-01-08 14:44:30 2124

原创 Protocol not found 异常

之前用户输入ip + 端口进行登录的时候,后台我都是使用:来进行切割获取到 ip 和 port,昨天突发奇想,使用如下的方式来获取吧URL murl = new URL(url);String host = murl.getHost();URL murl = new URL(url);int port = murl.getPort();想着挺方便,端口还不用转换了,没想到一运行报异常...

2019-01-03 10:41:58 6816

原创 自定义Launcher桌面图标无法加载的问题

通过之前的文章,我们知道在Launcher的源码中是通过加载default_workspace.xml这个配置文件来显示桌面的图标和小部件的,今天项目一测试,发现自定义的桌面图标加载不出来了,之前都是好好的,这是啥原因。通过查看这几天的代码提交记录,发现了在android studio 中的gradle.properties文件中的android.enableAapt2=false代码注释掉了,...

2019-01-02 11:12:58 626

原创 《Android开发艺术探索》笔记总结——第三章:View的事件体系

View的基础知识坐标:ViewGroup继承了View,所以ViewGroup本身就是个ViewView的的位置是有四个顶点来决定的,分别对应着top、left、right、bottom四个属性,Android中的坐标系是倒着的,x轴的正方向向右,y轴的正方向向下,一个View的坐标表示如图:所以View的宽和高需要坐标相减来得到width = right - leftheight...

2018-12-29 14:26:04 201

原创 《Android开发艺术探索》笔记总结——第二章:IPC机制

记录下之前自己面试的几个问题:提问:Android底层的IPC机制是什么?答:Binder提问:Linux中还有那些进程间通讯的方式?答:共享内存、消息队列、Socket、管道、共享文件、信号量提问:Linux中还有很多进程间通讯的方式,问什么Android选择了Binder?答:emmmm毫无疑问最后跪了,虽然之前也了解了Binder的运行机制,但是从来没有想过这个问题,这准备这篇...

2018-12-19 15:03:56 357

原创 Android判断文本编码格式

前几天项目中有这样的需求:客户端需要在服务器下载一个文本文件显示出来。bug是mac上的中文显示乱码。通过查找看项目中的老代码,原因是代码中使用的是通过BOM头的判断方式来判断文本的编码格式,如果没有BOM头,代码中就都识别成了GBK编码。虽然在Windows上utf-8的编码都默认添加BOM头,但是也可以使用无BOM头的UTF-8来保存的,而在mac上默认的UTF-8都是无BOM的编码格式,所以...

2018-12-13 18:19:05 5139 2

转载 Failed to resolve: com.android.support:appcompat-v7:26.0.0

从api 26开始,support libraries 需要从google的maven仓库下载,所以需要在project的build.gradle中allprojects 添加如下配置即可maven { url "https://maven.google.com" }这样如果本地没有设置的v7包的版本,AS会去网络上下载,因为在AS2.0的时期,默认的maven库是 jcenter(),3....

2018-12-12 16:14:37 1257

原创 《Android开发艺术探索》笔记总结——第一章:Activity的生命周期和启动模式

Activity的工作原理启动Activity的请求会由Instrumentation来处理,然后它通过Binder向AMS发请求,AMS内部维护着一个ActivityStack并负责栈内的Activity的状态同步,AMS通过ActivityThread去同步Activity的状态从而完成生命周期方法的调用。Activity的生命周期1)正常的生命周期 OnStart 和onResume...

2018-12-07 14:43:25 193

空空如也

空空如也

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

TA关注的人

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