自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android蓝牙简介

Android蓝牙基础知识

2022-08-18 11:17:29 1737

原创 懒汉式单例模式为什么要进行二次判空

public class Singleton { // volatile 保证可见性和禁止指令重排序 private static volatile Singleton singleton; // 将构造器的修饰符设置为"private",可以防止在外部进行new实例对象 private Singleton() { }; public static Singleton getInstance() { // 第一次检查 if

2021-11-24 14:59:48 542

原创 抓包工具Charles在Android开发中的应用

一、简介1、Charles是一个Http/Https代理工具,用它能够看到手机请求的所有Http和Https连接信息,包括请求、响应、Header等信息。2、官网地址:https://www.charlesproxy.com/3、支持WIndows和Mac二、注册方法不注册只能试用30天,可破解,网上搜索Charles注册码有很多,这里提供一个:...

2021-11-05 11:19:32 267

原创 Java开发手册及规范

前言为了利于项目维护以及规范开发,促进成员之间Code Review的效率,故提出以下开发规范根据约束力强弱, 规约依次分为强制、推荐、参考三大类:【强制】必须遵守,违反本约定或将会引起严重的后果;【推荐】尽量遵守,长期遵守有助于系统稳定性和合作效率的提升;【参考】充分理解,技术意识的引导,是个人学习、团队沟通、项目合作的方向。一、命名规范1.【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。// 错误示例: name / name / $name / nam

2021-11-03 12:11:31 1920

原创 Android开发规范

前言本手册以开发者为中心视角分为Java 语言规范(遵循《Java 开发手册》), Android 资源文件命名与使用,Android 基本组件,UI 与布局,进程、线程与消息通信, 文件与数据库,Bitmap、Drawable 与动画,安全,其他等九大部分,根据约束力强弱, 规约依次分为强制、推荐、参考三大类:【强制】必须遵守,违反本约定或将会引起严重的后果;【推荐】尽量遵守,长期遵守有助于系统稳定性和合作效率的提升;【参考】充分理解,技术意识的引导,是个人学习、团队沟通、项目合作的方向。一、J

2021-11-03 12:08:22 1461

原创 Android内存泄露检测之LeakCanary的使用

开始使用 debugApi 'com.squareup.leakcanary:leakcanary-android:2.7'在项目中加入LeakCanary之后就可以开始检测项目的内存泄露了,把项目运行起来之后, 开始随便点自己的项目,项目运行起来之后,在控制台可以看到LeakCanary的打印信息:LeakCanary的基础是一个叫做ObjectWatcher Android的library。它hook了Android的生命周期,当activity和fragment 被销毁并且应该被垃圾回收时候

2021-11-03 11:54:31 1047

原创 java-可达性分析算法和引用

在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行。通过引用计数来判断一个对象是否可以被回收。如果一个对象没有任何引用与之关联,则说明该对象基本不太可能在其他地方被使用到,那么这个对象就成为可被回收的对象了。这种方式成为引用计数法。例:A对象引用了B对象,给B对象的计数器+1C对象也引用了B对象,给B对象的计数器再+1当引用失效时,计数器-1任何时刻计数器为0的对象就是不能再被使用的,即对象已“死”,才可以被回收。引用计数法的特点是实现简单,而且效率较高,但是它

2021-11-03 11:25:42 1008

原创 MVP设计模式实践

MVP设计模式Contract: 视图层 业务层 数据层 需要被实现的接口,方便查看业务逻辑视图层只操作视图:显示 隐藏 变化业务层处理逻辑:数据初始化 各类判断数据层处理数据的请求和获取View : 视图层 一般就是ActivityXXXActivity extends MvpBaseActivity implements XXXContract.View, View.OnClickListener{}MvpBaseActivity :单独封装的BaseActivityMvpBas

2021-10-27 11:36:29 97

原创 离线应用同步数据模块学习总结

架构设计模块划分业务模块 :主要业务数据同步中心模块 :同步数据,上传,下载data_sync:实现数据使用接口 及上传下载功能data_sync_api:对外提供数据使用接口设置模块:设置端口号和ipsetting :设置,登录,锁屏页setting_api:提供获取端口号和ip相关接口其他模块:功能性模块:人脸识别,指纹识别,文书签字总览MVP设计模式比较标准的接口 注:后期单独写一篇mvp的文章Contract: 视图层 业务层 数据层 需要被实现的接口,方便查看业

2021-10-27 11:28:22 197

转载 (多线程)countDownLatch计数器

概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。用法构造器://参数count为计数值public CountDownLatch(int count) { }; 主要方法://调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行public void

2021-10-27 10:55:27 116

空空如也

空空如也

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

TA关注的人

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