自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

优了个秀

它在我的机器上可以很好运行

  • 博客(30)
  • 收藏
  • 关注

原创 Google开发者账号申请

背景Android端应用要出海,Google Play无疑是最好的平台,要上架Google Play,必须拥有Google开发者资质。账号申请申请Google开发者账号大致分为两步:一、申请Google账号;二、创建Google开发者账号。申请条件也比较简单:一是能访问外网;二是需要一张外卡(Visa、万事达、JCB、运通等)。一、申请google账号打开创建Google 账号地址,在此注册账号,可以使用Google邮箱,也可以使用其他邮箱(QQ、新浪等),这里向公司申请了个公共邮箱,所以点 改

2021-09-09 21:56:27 9222 2

原创 重拾系列之——Android AMS

AMS

2021-01-27 11:27:41 251

原创 重拾系列之——Android系统启动流程

概述Android系统的启动从按电源键拉起Room,到加载引导程序唤醒nei,再经历init进程、Zygote进程、SystemServer进程启动各种系统服务进程,最后AMS启动Launcher进程进入到系统桌面。init进程init进程是系统中的第一个进程,在引导程序BootLoader唤醒内核后启动,init进程会在系统中找到一个init.rc脚本,init进程根据init.rc配置启动了zygote服务进程Zygote进程所有的应用进程、包括system_server都是Zygote创建的

2021-01-20 14:39:39 185

原创 重拾系列之——Java多线程

线程进程的最小执行单元,CPU资源分配的基本单位。线程的六种状态1、NEW新创建,但是没有调用start()方法,线程还没有启动2、RUNNABLE调用了start()后,进入可运行状态,jvm正在执行线程的run方法BLOCKED:线程状态被阻塞。发生阻塞式I/O时,进入synchronize方法或代码块执行失败时,其他线程 持有锁时会进入该状态。WAITING:执行完某个特定的方法后,会等待其他线程执行完毕,此时线程进入等待状态。调用Object#wait()时进入等待状态,调用Th

2021-01-19 09:53:04 96

原创 重拾系列之——Java集合框架

1、概述集合框架分为了两大阵营,分别是Collection和Map。Collection派生了List、Set、Queue三个子类;Map接口采用的是key-value的存储方式,保存具有映射关系的数据。2、Collection接口Collection派生了List、Set、Queue三个子类,List的特点是有序可重复,可以直接根据元素的索引来访问;Set的特点是无序不可重复,只能根据元素本身来访问;Queue队列集合。2.1、List集合List是一个有序可重复的集合,常用的Lis实现类有Ar

2021-01-18 16:45:42 197

原创 重拾系列之——类加载机制

概述类加载过程是经过加载、验证、准备、解析和初始化这一系列过程,最终将.class文件加载到内存,形成可以被JVM识别的Java类型。类加载过程类加载机制从加载开始,到使用,再到释放,需要经过加载、验证、准备、解析、初始化、使用和卸载等几个流程。加载:将class文件加载到内存,并获取该类的二进制字节流。验证:验证文件格式、元数据、字节码和引用符号等。准备:为类变量(static)分配内存,并初始化(0值),在方法区中分配解析:将符号引用转化为直接引用初始化:执行Java程序代码,为类变

2021-01-17 13:25:33 132

原创 重拾系列之——JVM垃圾收集机制

1、概述对堆内存中已死亡或长时间不使用的对象进行清除和回收,注意是堆,而不是虚拟机栈或常量池。说白了其实就是对谁,在什么时候做了什么不可描述的事。2、判断对象是否可被回收2.1、引用计数法对象引用一次,计数器+1,引用失效一次,计数器-1,直到计数器为0时,对象可被回收。但是这样有个缺点,就是循环应用的对象无法被回收,比如有A和B两个对象,A持有B的引用,B同样持有A的引用,这样使用该算法计数器是不会为0的2.2、可达性分析算法通过GC Roots的对象作为根节点往下搜索,当一个对象没有任

2021-01-16 22:51:32 71

原创 Android+Java后端数据交互加密——AES+RSA

早前公司新开发了个项目,在数据加密部分讨论后选择了AES+RSA方式(对称+非对称)。参考了网上部分比较优秀的例子后,最终使用了一下实现方式,有需要的朋友可以在文章的最后获取完整demo。话不多说,直接开始。下面会先简单介绍加解密思路,然后再分别介绍Java后端和Android端的实现,最后再简单搭建个环境实现两端数据加解密。加密解密流程一、加密: 1、客户端和服务端双方约定好公私钥对,即公钥PUBLIC_KEY,私钥PRIVATE_KEY 2、客户端使用私钥PRIVATE_KEY对数

2020-10-26 15:42:09 1791 2

原创 Android 手撸一个简易路由Router

上一篇文章 介绍了搭建一个组件化项目,但是有一个痛点是我们必须要解决的,那就是组件之间的通信,用惯了单体结构项目的同学,大多数是使用显示Intent进行Activity的,但是这种做法在组件化项目中是行不通的,毕竟各组件是相互独立的,并不能持有另一个组件的引用。那只能用别的方法了,路由表是目前比较流行的方案,这里推荐两个比较多人喜欢的路由框架,Arouter 和 ActivityRouter ,具体用法和解释网上很多牛人都已经介绍得很清楚了。这里是打造一个自己的专属路由。开始工作这里使用的是APT技术

2020-07-31 16:43:37 647

原创 真香系列之Android 组件化开发

随着项目日益变得复杂、庞大,单一结构项目变得越来越难以维护,平时改个很小的功能,往往有种牵一发而动全身的赶脚,特别难受。最近简单尝试了下组件化后,嗯~真香。先上个项目结构图,简单分了壳app、主页main、登录模块login和个人中心模块member,另外还简单拆分了公共组件、基础组件和路由。开始搭建首先创建壳工程,app模块下里面什么也不需要,它只是个空客,如果不小心默认生成了MainActivity,删掉;然后修改AndroidManifest.xml,去掉启动Activity相关,修改后如下

2020-07-30 16:47:39 170

原创 RecyclerView 局部刷新、删除错乱

列表的局部刷新和删除错乱问题尽管网上已经有很多牛人分享过解决方法,这里还是根据自己的实践记录一下吧。一、局部刷新有这样的场景,我们需要修改item中的某一要素,如:详情介绍,那么通常有以下几种方式:1. Adapter.notifyDataSetChanged()2. Adapter.notifyItemChanged(position)3. Adapter.notifyItemChanged(position, payload)下面分别介绍这几种使用的可行性1、notifyDataSet

2020-07-28 14:29:40 977

原创 Android Jetpack之Navigation

此篇章简单介绍Navigation的使用,概要介绍请参考Android开发者文档首先新建一个工程,然后创建Activity,这里AS提供了一些模板,我们可以选Navigation相应的模板,我这里为了熟悉编写流程,所以就建了个空的Activity。要使用Navigation组件,Google方面有些限制:AS必须要3.3及以上的版本,然后在module下的build.gradle添加依赖,这里用的是Java的 def nav_version = "2.3.0" // Java language

2020-07-01 16:48:46 690

原创 Android BrocastReciver广播使用

BrocastReciver(广播)是Android四大组件之一,在Android体系中占据比较重要的地位。比如监听网络的变化、应用安装卸载、电量变化等等广播按类型可分为普通广播、有序广播。按注册方式分为静态注册和动态注册1、普通广播:sendBroadcast()方法发送,顺序不确定,无法拦截;但是效率较高2、有序广播:sendOrderedBroadcast()方法发送,顺序确定(-1000~1000),数值越大优先级就越高,可以被拦截。3、静态注册:在AndroidManifest.xml中

2020-06-04 16:16:26 442

原创 Android Intent 传输大图片

Android中的Intent作为四大组件间通讯的桥梁,支持传输基本数据类型、序列化对象等等但是要传大图片呢?能不能传呢?下面开始做个试验,先准备一张近500k大小的图片,存放在mipmap下直接通过Intent的putExtra方法传输,并且打印bitmap大小。Intent intent = new Intent(this, Main2Activity.class);bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.

2020-06-02 17:07:06 3317 4

原创 重新认识 Android ContentProvider

介绍1、是什么?:ContentProvider是Android四大组件之一,也是五种数据存储的媒介之一,在Android中重中之重2、作用?:进程间或进程内数据共享本文简单介绍进程间数据共享,会使用到几个常用类和关键字,下面先介绍一下:1、authorities:授权信息,在清单文件声明;2、URI:统一资源标识符,格式:content://授权信息/表名;也可以指定表中的某条记录,也可以配置通配符。这里不展开3、UriMatcher:在ContentProvider中声明,根据URI匹

2020-06-01 17:12:53 157

原创 重拾Handler

说到Handler,相信学过Android的同学都能随口说出:这家伙是线程间通信的一种机制。但是,平时用来发送消息的方式有哪些?Handler是什么时候和Looper关联的?又是怎么关联的?消息在子线程中发出,在UI线程为什么能获取的到?这这这。。。太难了Handler不能单独使用,内部配合着Message,Looper,MessageQueue以及ThreadLocal,这几个平时比较少直接...

2020-05-05 19:43:55 120

原创 Java后端之路--SpringBoot整合Mybatis-Plus

SpringBoot整合mybatis-plus,实现简单的用户CRUD操作,直接开始吧。准备环境系统:Win10开发工具:IntellIJ IDEA 2019.3Java版本:open jdk1.8项目管理工具:Maven新建项目此次以多模块管理,根目录下的pom.xml负责依赖版本管理,Modules需要哪些依赖直接在Module下的pom.xml引入即可,不用再重复管理版本...

2020-05-04 15:30:11 465

原创 Java后端之路--SpringBoot之HelloWord

使用SpringBoot构建HelloWorld项目,直接开始吧。环境准备系统:macOS开发工具:IntellIJ IDEAJava版本:open jdk1.8项目管理工具:Maven新建项目打开idea,选择操作如图所示;如果我们已经打开了一个工作空间,File->New->Project即可,达到效果一致。选择项目SDK版本这里选择的是Java1.8,S...

2020-05-03 20:15:23 403

原创 adb logcat 免配置环境变量,免安装,开箱即用

以前有写过一篇adb常用命令的使用和环境变量配置,详见此文章。基于此,现在分享一个非常好用的抓取日志的小工具。注意:该工具免配置环境变量,免安装,开箱即用一、准备工作首先我们先准备adb相关文件,保存在adb文件夹下,如下:然后在adb文件夹同级目录新建一文本编辑这么一段代码。将文件保存为bat格式文件。@echo offtitle 输出日志到文件echo 【提示】echo 1. ...

2020-04-15 13:19:35 466

原创 GenerateAllSetter:一键生成所有setter方法

写过Java的同学都知道,当JavaBean有大量的属性时,我们setXxxx()的时候就非常痛苦了,花费大量的时间去做一些苦力活,显示不是我们想要的。使用GenerateAllSetter就能解决这个问题,它就能做到一键生成一个对象的所有的set方法。先看效果:图中可以看到通过GenerateAllSetter插件一键生成了User类的setXxx方法,简化了我们平时大量手工码字的工作。...

2020-03-25 15:43:00 5747

原创 Android Editext 字符过滤器 InputFilter

今天测试小妹揣着机子过来又是一顿毒打,说:这个证件号输入框输入了一些非法字符,是输入不进去了,可为什么没有点提示啊,现在输入的emoji,界面一动不动的,快优化一下。好吧,疏忽了,面壁中。。。之前呢,只是对Editext做了很简单的处理,像默认数字键盘 inputType="number" 和 android:digits="xxx",digits是能控制输入类型了,但是没有提示啊,还得做一...

2020-03-03 16:34:19 830

原创 Android反编译App的一次实践

最近项目准备上线版本迭代,但是投产前要先过了安全检测,结果下来后懵逼了,检测出来的漏洞比上个版本的检测还多,其中有个中危的我比较在意:反编译结果显示未经过加固和有效混淆?于是抱着怀疑的态度去做一次加固前和加固后的反编译对比,结果。。。本次反编译实践使用到的工具有:apktool: 用于从apk文件提取classes.dex文件的,v2.4.0版本。官网下载dex2jar: 将class...

2020-01-21 18:20:50 288

原创 Java8 Lambda 表达式和方法引用

都说Java8已经发布好几个世纪了,现在才谈它的一些特性,是不是落伍了,老哥我是个慢热的男人,哈哈~~在我们的项目中使用了JDK1.8了之后,回头再看看一些控件的点击事件,发现setOnClickListener的入参变灰了,鼠标移到参数上可以看到下图显示,大致的意思是匿名内部类View.OnClickListener可以用Lambda替换。我们用Alt+Enter大法看看AS会给我们什么...

2020-01-14 16:43:28 193

原创 Beyond Compare 文件和文件夹差异对比神器

平时工作中,或多或少都会遇到比较两个文件或两个文件夹之间的差异性,比如两份代码、两个文案甚至两张图片。如果内容很多,不可能一行一行去比较,这时我们可能需要一些工具来辅助,这里介绍神器Beyond Compare。为什么说是神器?唯有强大!文件比较?简单;文件夹呢?不再话下,甚至是表格、16进制、MP3、图片、注册表和版本都能轻松拿下。如此强大的伙伴,待我细细道来。安装包下载官方下载地址,可...

2019-12-19 17:16:23 1164

原创 仿QQ侧滑删除,你还在苦于找轮子吗

客服:“xxx,退货的按钮在哪啊,我怎么找不到啊?”我:“像Android 手机QQ一样侧滑就出来了。。。”。类似这样的对话重复上演了N次没错,今天我要介绍的是和QQ一样的侧滑删除类似的操作,SwipeMenuLayout登场~~最早收到的要实现Item侧滑删除的需求是在2016年的一个餐饮项目,当时刚入坑没多久,还以为SDK就有现成的API,毕竟像QQ这种超级App都用的这么骚了。于是一...

2019-12-17 16:58:18 160

原创 Android 蓝牙的一些使用心得

最近在搞蓝牙串口开发,由于此前对蓝牙这块接触较少,所以在写项目时碰壁不少。在查阅了不少大神写的Android蓝牙项目技术文章后,于是写下本篇文章,算是自己这段时间对蓝牙些许了解的一个总结吧。注:本篇章只介绍经典蓝牙,想了解低功耗蓝牙的请出门左转,哈哈~~~蓝牙开发的基本流程为:开启-》搜索-》配对-》连接-》数据交换。其中配对成功之后系统会自动执行连接操作。权限为了后面工作的不必要麻...

2019-12-13 16:01:37 178

原创 Chrome插件:请开始你的表演,smartUp手势骚操作

故事背景一天,测试妹子跑来找我帮她查东西,于是打开Chrome就是一顿操作猛如虎,东西还没查到,后面传来妹子的惊呼:哇!xxx,你的电脑还能这样操作吗,用鼠标随便乱划都能操作浏览器的前进、后退、刷新吗?是什么牌子的电脑啊?哈哈,其实这并非是系统自带的功能,而是我们今天的主角smartUp手势插件的功劳。这是个啥玩意儿呢?其实它就是一个浏览器插件,官方是这样介绍的: 一个更好的手势类扩展。...

2019-12-09 21:44:01 2517

原创 Android Studio Debug 断点调试,各种骚操作都在这里了

Android Studio中的断点调试功能很好用,可谓是强大,用的好,不仅可以一定程度上提高开发进度,还能提高逼格。首先从最开始的来吧。启动Debug启动Debug有两种方法,一是Debug启动APP;二是Attach Debugger。方法一和Run App操作类似,点击之后会项目会运行在我们的设备上,然后就可以开始后面的调试了;方法二的前提是我们的项目必须已经运行过,点击之后就可...

2019-12-04 18:21:32 1009

原创 Android GreenDao入门使用

最近负责的项目有需要用到数据库,原声sqlite写起来太麻烦了,所以找了用户群比较多的GreenDao和DBFlow,几经对比,最终选择了GreenDao。话不多说,开搞。官方文档先来看看GreenDao的用法,打开 GreenDao GitHub地址,可以看到目前最新版本是3.2.2。根据文档先将依赖添加到我们的项目。开始配置1、配置project下的build.gradledepen...

2019-12-03 14:52:11 364

原创 TextUtils,你该认真了解一下了

    平时写项目,一般都会对文本进行一些简单的操作,比如判空、截取、替换等。看到这里,我们首先想到的一般是Java中的一些常用API,如isEmpty() 、substring(beginIndex)、replace(oldChar, newChar),这些方法固然是在我们使用到的时候首先想到的,但是今天我要介绍的是Android中的TextUtils,看看它到底有什么值得我们去使用的,直接开始...

2019-11-28 11:20:32 1292 1

空空如也

空空如也

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

TA关注的人

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