自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android 学习笔记(7)之JSON序列化

JSON1. 读写速度快2. 解析简单3. 轻量级4. 独立于语言,平台5. 具有自我描叙性JSON解析方式1Android Studio自带org.json解析基于文档驱动 需要把全部文件读入到内存中 然后遍历所有数据,根据需要检索想要的数据2 Gson 解析gson.toJson、gson.fromJson基于事件驱动根据所需取的数据 建立1个对应于JSON数据的JavaBean类,即可通过简单操作解析出所需数据按需取数据3,Jackson解析 ObjectMapper ..

2021-07-28 15:03:23 480

原创 Android 学习笔记(9)之JavaIO加固

1,反编译zip 文件解压apk ----> dex2jar 将classes.dex 转成jar ----> jd-gui 打开jar 查看class文件防反编译 加固保护classes.dex文件思想通过将非核心的dex文件进行暴露来达到保护核心dex文件的目的。流程 加密dex1 文件 合成壳dex 形成新的dex 再签名 apk文件脱壳 流程 壳dex 解密dex1 Multidex 加载类apk 打包流程资源文件通过aapt 工具生成R....

2021-07-28 14:58:09 160

原创 Android 学习笔记(8)之JavaIO原理

关键点 修饰模式 (Context也是装饰模式)装饰模式原理1,组件对象接口 Component2,Decorator 所有装饰器的抽象父类 内部持有Component对象3,ConcreteComponent具体的装饰器对象。对象下面的InputStream 就是组件对象接口 里面定义read()FilterInputStream 装饰器的抽象父类 持有InputStream 对象 重写read()加功能BufferedInputStream 等就是具体的装饰器对象。 具体实...

2021-07-28 14:55:35 126

原创 Android 学习笔记(N)之Git使用总结

1,版本管理历史 (VCS版本控制系统)本地版本控制系统,集中化...svn, 分布式版本控制系统gitGit 和其他VCS区别分布和集中区别直接记录快照,而非差异比较git 分支使用方便git 一般只添加数据,一旦你提交快照到 Git 中,就难以再丢失数据2,命令流程图远程仓库 clone至 本地仓库 checkout至 工作区 add至 暂存区 commit至 本地仓库 push至 远程仓库 pull(Fetch+merge)至 工作区...

2021-07-23 17:28:39 84

原创 Android简单使用app增量更新

不讲原理,快速上手实现app增量更新本文只是app端 手动实现新旧apk的差分包。注(apk的大版本不变,改变的只是资源版本号)1,主模块,先引入下面cpp,配置文件(下面有资源)报错的话 app build 中defaultConfig 加入 ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'armeabi-v7a' // 还可以添加 'x86', 'x86_64', 'mips', '

2021-07-09 11:24:04 859

原创 Android 学习笔记(7)之kotlin_2

objiect 创建一个类的实例(类对象)companion object 伴生对象(static静态类)internal 修饰类方法,表示这个方法只适合当前module使用lateinit 延迟加载 不能用来修饰基本数据类型,不能修饰valconstructor 构造函数,一个主,多个次,次级构造函数需要调用主构造内联扩展函数之also inline T.also 返回传入对象的本身(类似let)内联扩展函数之apply内联扩展函数之run 省略it 可以直接调用 返回最...

2021-07-09 10:05:46 95

原创 Android 学习笔记(7)之kotlin_1

Kotlin-java没有的is 和 !is 代替了instanceofin 和 !in 检测是否在数组、集合,区间里面闭区间..1..10 [1,10]半开区间a until b [1,10)反向区间a downTo b区间步长 step运算符 a and b 与a or b 或a xor b 异或a shl b 左移a shr b 右移a ushr b 无符号右移== 和 !===表示值是否相等流程控制语句if-else 替换了三...

2021-07-09 09:59:07 87

原创 Android 学习笔记(7)之序列化总结

1,单例模式 (私有化类中的构造方法)懒汉 使用时创建 getInstance 里面new 注意同步饿汉 一开始就创建 类static属性里面new getInstance返回实例静态内部类, 静态内部类里面new 通过类.的方式调用 如Single.SingleHandler.single枚举 枚举类里构造方法私有2,序列化(数据转二进制)进程间通信系统底层只认识字节序列Java Serializableandroid Parcelable序列化 用于网络传输,...

2021-06-24 14:47:39 128

原创 Android 学习笔记(7)之Dagger2注解分析

1,依赖注入依赖是类与类之间的连接2,依赖倒置 设计原则不依赖具体,依赖抽象(接口)实质是面向接口编程的体现单一职责原则 应该有且仅有一个原因引起类的变更里氏替换原则 子类完美替换基类依赖倒置原则 依赖抽象接口隔离原则 类间的依赖关系应该建立在最小的接口上迪米特法则 类间解耦开放封闭原则 修改关闭,扩展开放组合复用原则 一个类中有另一个类的对象3,控制反转 (IoC)把内部依赖的创建权力移交给了外部(例如构造函数,构造函数参数是抽象,实现时具体)控制反转...

2021-06-22 14:43:01 129

原创 Android 学习笔记(6)之Lambda和注解

1,lambda 匿名函数语法格式一:无参数,无返回值 () -> System.out.println("Hello Lambda!");语法格式二:有一个参数,并且无返回值 (x) -> System.out.println(x);语法格式三:若只有一个参数,小括号可以省略不写 x -> System.out.println(x)语法格式四:有两个以上的参数,有返回值,并且 Lambda 体中有多条语句Comparator<Integer> com ...

2021-06-16 20:02:41 349 2

原创 Android 学习笔记(5)之RxJava解析1

1,线程调度Scheduler 有很多实现类 SingleScheduler .IoScheduler....Schedulers.computation() 用于计算任务,Schedulers.from(executor) 指定excecutor作为调度器Schedulers.immediate( ) 当前线程执行Schedulers.io() IO密集型任务Schedulers.newThread() 为每个任务新建线程Schedulers.trampoline( ) 当其它排队...

2021-06-09 17:12:37 107 1

原创 Android 学习笔记(5)之RxJava解析

1,观察者模式创建被观察者(Observable)创建观察者(Observer)订阅关联(subcribe())4个角色抽象被观察者:定义添加,删除观察者的功能方法,(注册/解绑) 通知观察者方法抽象观察者:定义收到消息后处理什么事情的方法具体被观察者/观察者:抽象的实现。自定义观察者模式的话,被观察者需要持有观察者列表,通知方法等。JDK观察者里面实现需要注意,被观察者发送消息需要setChange(),改变状态。RxJava里面被观察者创建后里面是创建了发射器,发布订阅模式区别,发

2021-06-04 16:46:06 187 1

原创 Android 学习笔记(4)之JVM虚拟机内存区域解析

1,运行时数据区域程序计数器:指向当前线程正在执行的字节码指令的地址(行号)作用:Java是多线程的,意味着线程切换 确保多线程情况下的程序正常执行 独立运行互不影响栈(Stack) FILO先进后出为什么JVM使用栈:非常符合JAVA中方法间的调用 A()-B()-C()虚拟机栈:每个线程私有的,存储当前线程运行方法所需的数据,指令、返回地址,-Xss 1M局部变量表:存放局部变量和对象引用每个方法在执行的同时都会创建一个栈帧操作数据栈: 操作数栈 基本类型,一开始是空,动态连接:

2021-05-29 16:55:30 115 1

原创 CAS及原子操作原理解析

CAS(Compare and swap)即比较并交换,也是实现我们平时所说的自旋锁或乐观锁的核心操作。它的实现很简单,就是用一个旧的预期的值和内存值进行比较,如果两个值相等,就用新的值替换内存值,并返回 true。否则,返回 false。原子操作原子就是最小不可拆分的,原子操作就是最小不可拆分的操作,也就是说操作一旦开始,就不能被打断,直到操作完成。看下面操作:public class CasTest { static int count = 0; /** * Runn

2021-05-27 15:09:55 134

原创 Android 学习笔记(4)之线程池和AsyncTask

1,为什么要用线程池?降低资源消耗 重复利用提高响应速度 不需要重新创建提高线程的可管理性线程池默认线程数最好不大于cpu核心数2,创建和流程public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handl

2021-05-27 13:48:30 99

原创 Android 学习笔记(3)之多线程和线程性能优化2

1,线程间的共享和协作内置锁多线程访问同一对象 需要synchronized 保证可见性和排他性对象锁和类锁锁对象,锁class对象(唯一),static方法2,等待/通知机制notify() 通知一个,不确定具体notifyAll()所有 ,一般都用这个调用wait()方法后,会释放对象的锁模型等待方遵循如下原则。1)获取对象的锁。2)如果条件不满足,那么调用对象的wait()方法,被通知后仍要检查条件。3)条件满足则执行对应的逻辑。synchronized (对象){whi

2021-05-25 15:08:02 49

原创 Android 学习笔记(3)之多线程和线程性能优化1

1,CPU核心数和线程数的关系1:1 加入超线程 1:2 4核对应8线程2,CPU时间片轮转机制 RR调度每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间上下文切换( context switch),需要5ms 时间片 一般100ms(短效率低,长难等待)3,什么是进程和线程进程是程序运行资源分配的最小单位 相互独立 系统/用户线程 资源包括:CPU、内存空间、磁盘10等线程是CPU调度的最小单位,必须依赖于进程而存在 资源(如程序计数器,一组寄存器和栈

2021-05-25 14:25:14 148

原创 Android 学习笔记(2)之反射和动态代理总结

1,反射定义运行时才知道类,获取类构造,实例,调用方法2,反射作用构造对象,获取方法,执行,获取/修改属性 私有方法,属性需setAccessible(true)3,Class类Class是一个类,封装了当前对象所对应的类的信息,只有一个class实例获取方法(3种)类名.class ,对象.getClass(),Class.forName(全类名)构造方法,class.newInstance (构造实例对象)1,代理作用通过代理对象间接访问目标对象,防止直接访问的麻烦。增强原有业

2021-05-24 11:09:10 187

原创 Android 学习笔记(1)之泛型总结

1,为什么我们需要泛型?适用于多种数据类型执行相同的代码泛型中的类型在使用时指定,不需要强制类型转换2,泛型类的定义引入一个类型变量T(其他大写字母都可以,不过常用的就是T,E,K,V等等),并且用<>括起来,并放在类名的后面。泛型类是允许有多个类型变量的3,泛型方法辨析泛型方法 必须要有 否则是普通方法4,限定类型变量(可用于方法,类)extends左右都允许有多个,如 T,V extends Comparable & Serializable注意限定类型中,只允

2021-05-24 10:49:46 163

原创 android studio 编译速度慢,配置加速至10秒内

网上有很多配置方法,配置offline模式,内存大小设置等。请自行度娘。我列举几个配置过程的问题。1,android studio 安装bin目录中,找studio.exe.vmoptions,修改内存大小,重启无效。无效的话,C:\Users\你的用户名.AndroidStudio3.5\config\studio64.exe.vmoptions 这里也设置重启就可以。2,多模块的项目,尽量少模块。3,如果集成了其他编译耗时操作,例如bugly上传符号表,调试的时候可以关调,bu..

2020-10-27 11:16:35 1002

原创 ZXing生成二维码/条码, 扫描二维码/条码 (包含从相册选择图片)

本文主要使用zxing 库封装生成二维码/条码, 扫描二维码/条码 以及扫描从相册选择的二维码/条码。先看视频效果:

2020-08-27 17:19:04 1064

原创 Android 前后台切换,以及5分钟不操作跳转至登陆

本文解决的问题:Android 后台切换到前台运行,判断是否超过一段时间,如果超过一段时间就跳转至登陆,以及前台运行时一段时间不操作跳转至登陆。本文有短信登陆和手势密码登陆两种 以30分钟不操作跳转短信登陆,5分钟不操作跳转手势密码登陆。时间具体看业务需求。原理:1,我们需要启动一个定时器去定时判断是否5分钟没有操作app (前台运行)2,后台切换前台运行的时候,需要立即去判断是否5/30分钟没有操作app3,处于后台运行的时候,一般需要停止定时器,不然浪费资源。看具体需求而定...

2020-08-25 15:14:46 1089 1

原创 自定义view之半圆环比例图(逻辑简洁,注释详细)

啥也不说先上图,线看效果第一:在values下创建 attrs.xml,写需要的自定义属性;第二:在 自定义View第三个构造方法中,获取自定义属性;第三:重写onMeasure【不是必须的】;第四:重写onDraw【所有绘制代码都写在onDraw】;一,定义线条宽度,间隔背景颜色,间隔角度,两个textview的属性等<declare-styleable name=...

2020-04-17 15:25:22 487

原创 Android集成Facebook直播

1,准备工作1、登录Facebook官网https://www.facebook.com/,点击顶部的Home:进入下面页面:3、页面左测的底部是创建 主页/小组/活动,上边则是展示已经创建的列表。2,获取开发者应用编号调用API进行登录时,需要一个应用编号,获取方法如下:,进入开发者页面并登录Facebook账号(https://developers.fa...

2018-08-10 17:29:53 1056

原创 类似淘宝不规则九宫格

今天看到一个demo 发现上面有个类似淘宝的不规则的九宫格布局,收藏下,写下来,与君分享。<LinearLayout android:layout_width="match_parent" android:layout_height="200dp" android:orientation="hori

2017-09-08 15:28:08 1176 1

原创 阿里云热修复sophix详解

现在网上有几种常用的app热修复技术,个人感觉阿里云热修复操作比较简单,主要几个步骤,创建app---下载sdk---集成(AS和eclipse)---生成补丁---发布补丁(可以本地调试)。下面详细讲各个步骤:一,创建APP登录移动热修复控制台:https://hotfix.console.aliyun.com/,点击右上角创建App,跳转到MHub App管理控

2017-09-05 09:49:52 4439

原创 图片压缩大小清晰度测试

昨天客户发来需求说app里面图片不清晰,需要修改图片清晰度。         之前的代码由于app的图片要上传到图片服务器,为了节省流量和减少上传时的耗时,所以图片应该尽量小,但却导致了图片不清晰。         好吧,问题来了,如何找一个让客户满意,图片大小和清晰度合适的参数呢?         我想了下,写了个测试工具给客户,让客户自己选择,希望这个工具对大家都有用。

2017-03-17 10:42:03 1184

原创 三级缓存详解

Android 开发中对图片的加载恨常见,为了防止出现内存溢出,采用三级缓存:    内存缓存,    本地缓存(sd),    网络缓存。  从网络下载的图片保存到内存和sd卡中,之后调用可以直接从内存或者sd卡读出/** * 内存缓存 * @author xiongt * */public class MemoryCacheUtils { private LruCa

2017-03-08 15:12:12 2316

原创 TableFixHeaders动态设置行高

突然想写博客,只因为想分享下自己的劳动成果,第一次写,有出错的地方见谅,下面进入正题:           android中显示表格是非常痛苦的事情,因为屏幕空间有限,如果你要在android使用表格,那么可以考虑使用TableFixHeaders,TableFixHeaders可以在表格标题一列不动的情况下,左右滑动以显示被挡住的数据。开源网站上有源码https://github.c

2016-08-18 16:36:26 1919 2

增量更新文章配套资源包

增量更新文章配套资源包

2021-07-09

ZXingDemo.zip

使用zxing 库封装生成二维码/条码, 扫描二维码/条码 以及扫描从相册选择的二维码/条码。主要用于二维码开发和使用

2020-08-27

zxingdemo演示.mp4

zxing 库二维码/条码,生成,扫描,从相册选择扫描。主要使用zxing 库封装生成二维码/条码, 扫描二维码/条码 以及扫描从相册选择的二维码/条码。

2020-08-27

LoginTypeDemo.zip

Android 后台切换到前台运行,判断是否超过一段时间,如果超过一段时间就跳转至登陆,以及前台运行时一段时间不操作跳转至登陆。

2020-08-25

底部导航栏ViewPager

viewPager实现底部导航栏设计

2016-05-27

空空如也

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

TA关注的人

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