自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (2)
  • 收藏
  • 关注

原创 Mac Flutter配置问题: Kotlin could not find the required JDK tools in the Java installation

Mac Android Studio 默认配置JDK环境,今天配置Maven环境时,在 Oracle 官网下载了最新的JDK 安装包,安装完毕之后。发现Flutter项目无法运行,报错信息为:FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':business_hotelbundle:kaptGenerateStubsDebugKotlin'.> Kotlin co.

2021-08-02 13:56:33 3061

原创 Android build.gradle 之 android-productFlavors 和 android-buildTypes

android { compileSdkVersion rootProject.ext.android.compileSdkVersion buildToolsVersion rootProject.ext.android.buildToolsVersion flavorDimensions "mode", "type" defaultConfig { ...

2021-08-02 13:47:25 454

原创 Mac OS 配置Java / adb/Android 等相关开发环境

配置 Java SDK主要分为以下步骤:到Oracle官网下载JDK1.8安装包。 打开获取到的安装包按步骤安装到系统上。 配置系统的环境变量。 验证JDK1.8是否安装成功。1.到Oracle官网下载JDK1.8安装包https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html下载需登录 Oracle 账号2.下载完成后进行安装,Mac会默认安装到:资料库/Java/JavaVirtu.

2020-10-25 16:00:55 231

原创 Android 带有悬浮计时器的录屏实现

MediaRecorder/** * Used to record audio and video. The recording control is based on a * simple state machine (see below). * * <p><img src="{@docRoot}images/mediarecorder_state_diagram.gif" border="0" /> * </p> * * <p>A c.

2020-06-29 13:20:53 1336

原创 Android 硬件通讯之 蓝牙,USB,WIFI(二.WIFI)

WIFI通讯:双网络通讯随着公司产品的不断迭代,发现上位机(App)与下位机(Vci)通讯,在收发长包数据时,蓝牙通道出现了丢字节,丢包现象。而这时候会提示用户使用USB串口通讯方式。但是USB串口通讯,必须局限于线束的连接。为了优化这个问题,增加引入了WIFI上下位机通讯通道。应用场景App与硬件使用WIFI(无网)通道进行命令收到,并在App内强制使用4G通道进行Http请求1,接收到WIFI接连的广播后,执行连接操作 /** * 发现wifi设备 .

2020-05-12 17:42:58 1021

原创 Android 硬件通讯之 蓝牙,USB,WIFI(一.蓝牙)

1蓝牙蓝牙通讯分为:经典蓝牙与低功耗蓝牙现在所说的蓝牙设备,大部分都是在说4.0设备,ble也特指4.0设备。 在4.0之前重要的版本有2.1版本-基本速率/增强数据率(BR/EDR)和3.0 高速蓝牙版本,这些统称为经典蓝牙。1.1 经典蓝牙核心API:BluetoothAdapter bluetoothAdapter = BluetoothAdapter...

2020-05-12 14:24:27 1367 1

原创 ThreadLocal,ThreadLocalMap 和Thread 的关系

废话不多说,看图!!!从上图我们可以发现Thread中持有一个ThreadLocalMap,这里你可以简单理解为就是持有一个数组,这个数组的元素是Entry类型。Entry的key是ThreadLocal类型的,value是Object类型。也就是一个ThreadLocalMap可以持有多个ThreadLocal。他们是一对多的关系为什么ThreadLocalMap 设...

2019-10-21 17:28:21 200

原创 Android Studio 项目异常问题汇总

问题一异常描述:Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: Failed to find byte co...

2018-12-07 10:52:58 1508

原创 Android View事件体系汇总其三

上篇文章 Android View事件体系汇总其二 主要介绍了View的滑动与弹性滑动。接下来我们就来介绍View事件体系的核心知识与难点-View的事件分发机制。介绍事件分发机制之前我们先来介绍三个重要的方法,点击事件的分发过程主要由着三个方式共同完成:boolean dispatchTouchEvent(MotionEvent ev)用于进行事件的分发,如果事件能够传递给View,...

2018-09-27 21:56:16 217

原创 Android View事件体系汇总其二

上一篇文章Android View事件体系总结其一主要介绍了View事件体系关联的一下基础参数与使用方法和场景。下面就开始进入正题,View的滑动相关。在Android设备是上,滑动几乎是每个应用都会设计的问题。另外由于手机设别屏幕比较小,为了给用户展现更好的体验,就i需要使用滑动来显示或隐藏一些内容。 View滑动实现滑动的效果主要有三种方式:1,使用scrollTo/scr...

2018-09-26 22:38:03 240

原创 Android View事件体系总结其一

什么是View?View是Android中所有控件的基类,是一种界面层的控件的一种抽象,它代表了一个控件。View的位置参数View的位置主要由它的四个顶点决定,分别对应View的四个属性:top,left,right,bottom。其中top是左上角纵坐标,left是左上角横坐标,right是右下角横坐标,bottom是右下角纵坐标。值得注意的是,这些坐标都是相对于View的父容器来...

2018-09-26 21:39:40 253

原创 设计模式六大原则与模式总结

设计模式六大原则: 一,单一职责原则(Single Responsibolity Principle)     最简单的面向对象设计原则,它用于控制类的粒度大小。 定义:一个类只负责一个功能区域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引它变化的原因。 二,开闭原则(Open-Closed Principle)定义:一个软件实体应当对扩展开放,对修改关闭。...

2018-09-21 11:14:20 366

原创 Git使用技能汇总

将本地代码上传到GitLab仓库打开Git Base Here切换到需要上传文件目录下或者在需要上传仓库的文件下打开 Git Base Here 命令行工具;按照顺序执行一下命令:git init :将目录变成git可管理的仓库git add README.md :将文件添加到暂存区中 git commit -m "fisrt commit"  :将文件提交到仓库 git remote add o...

2018-05-31 17:45:05 469

原创 Retrofit2 ,Dagger2等常用框架注解功能介绍

Retrofit2 注解相关@GET,@POST请求方法:提出一个Get/POST请求;另外还存在常见的请求方法注解 @PUT,@DELETE,@HEAD,@OPTIONS@HTTP 基本请求方法的扩展,用法如下 @HTTP(method = "get",path = "home",hasBody = false) Observable&lt;SubHomeResponse&gt; ...

2018-05-30 18:11:47 378

原创 Retrofit 拦截器-基础公共参数拦截器实现

为了紧跟潮流,之前在公司新开项目中设计使用了MVP+Retrofit+Dagger2模式的开发框架,但由于当时时间紧,任务中。尝试去通过拦截器添加基础参数,但是POST请求一直不成功,最终无奈放弃,使用了最Low的方式,GET,POST请求全部是用@QueryMap注解来添加请求参数,然后将基础参数封装一个公共的方法,每次请求接口是调用。这也成为了我心中一直的一个梗,久久不能释怀。后来曾多次尝试解...

2018-05-29 10:50:29 4477 4

原创 设计模式之单例模式

单例模式定义确保某一个类仅有一个实例对象,而且自行实例化并向整个系统提供这个实例。单例模式使用场景确保某个类只有一个对象的场景,避免产生多个对象浪费资源,或者某种类型对象只应该有且只有一个。单例模式要素1,构造函数不对外开放,一般为private;2,通过一个静态方法或者枚举返回单例类对象;3,确保单例类的对象有且只有一个,尤其是在多线程环境下;4,确保单例类对象在反序列化过程中不会重新构建对象;...

2018-05-28 11:31:38 343

原创 微信Android热修复/热更新平台Tinker集成相关-完整版

之前在公司的项目中集成微信的热修复/热更新平台-Tinker,也是我自己主动提出,然后慢慢研究。将近持续了两个星期的时间。这期间也踩过了很多坑,期间朋友和Tinker热修复讨论QQ群也对我多次进行解惑,因此打算整理出来,以泽同道!主要功能点既然说明了是完整版,就代表这和其他Tinker热修复平台相关文档有所不同。因为公司项目功能比较多,几乎涵盖了使用Tinker平台所能使用的大部分基础功能,主要包...

2018-05-17 17:46:30 1557

原创 Android 代码混淆配置规范

之前为项目集成微信热更新平台Tinker之前,应用并没有进行代码混淆,仅仅做了三方的APK加固。后来发现Tinker需要添加相关的混淆文件 tinkerMultiKeep.pro。所以就把之前欠的账补上,也在此进行总结记录一下。项目混淆文件主要包含三部分:1,基本混淆2,依赖引用资源混淆3,三方集成资源混淆这其中几乎涵盖了大部分的三方框架和三方平台的混淆配置,具体混淆配置请按照...

2018-05-17 17:38:58 823

转载 JVM垃圾回收策略

1,java中内存区域划分 Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干不同的数据区域,包括:       a.栈(虚拟机栈VM Stack ,本地方法栈Native Method Stack)      b.堆 (Heap)      c.方法区(Method Area)      d.程序计数器(Program Counter Regis...

2018-05-16 16:21:33 215

原创 介绍一下Token?

Token在安全中应用广泛,如防止表单提交,防止有人伪造客户端请求。在实际的开发中,我们已经不需要在写Token,可以直接使用已经封装好的类就可以了。但是,我们需要了解这其中的原理,那我就简单的聊一下这方面。     什么是Token? Token可以理解为令牌,服务器通过验证Token,来判断你是否有操作的权限。Token的重要特性是有效性,一般Token只是在一定时间内有效。超出时间就限制其操...

2018-03-28 21:00:59 849

原创 对Binder的理解?

直观来说:Binder是Android中的一个类,他实现了IBiner接口。 从IPC角度来说:Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,他的设备驱动是/dev/binder,该通信方式在Linux中没有; 从Android Framework角度来说:Binder是ServiceManager连接各种Manger(...

2018-03-28 20:58:51 248

原创 Service的两种启动方式和区别?

第一种启动方式:startService(Intent)启动服务 生命周期方法流程:onCreate --- &gt; onStartCommand 关闭服务:stopService(Intent)关闭服务 生命周期方法流程 :onDestory第二种启动方式:bindService(Intent , ServiceConnection , flag)启动服务 生命周期方法流程:onCreate ...

2018-03-28 20:58:43 7810

原创 Parcelable与Serializable都能实现序列化并且都可用于Intent间的传递数据传递,那么两者该如何取舍?

Serializable :Serializable 是Java中的序列化接口,其使用起来简单但开销很大,序列化与反序列化过程需要大量I/O操作。 Parcelable: Parcelable是Android中的序列化方式,因此更适合用在Android平台上,他的缺点是使用起来稍微麻烦点,但他的效率很高。这是Android推荐的序列化方式,因此我们要首选Parcelable.Parcleable主...

2018-03-28 20:56:26 252

原创 Activity的四种启动模式及其应用场景

介绍启动模式(Launch Mode)就必须先说一下任务栈。    1,当程序打开时就创建了一个任务栈,用与存储当前程序的Activity,所有的Activity属于一个任务栈。    2,一个任务栈包含了一个Activity集合,有序的选择哪一个Activty去和用户进行交互;只有一个任务栈的栈顶Activity才可以和用户进行交互。     3,任务栈可以移到后台,并完整的保留每一个Activ...

2018-03-28 20:53:48 456

原创 Java synchronized 的理解

Java关键字 可以用来修饰通常用来修饰方法,代码块。能够确保在同一时刻最多只有一个线程运行该代码,防止并发操作!当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块之后才能得以执行该代码块。 不过,当一个线程访问object的一个synchronized(this)...

2018-03-28 20:52:50 299

原创 Activity 的启动过程笔记

在Android系统中,Activity和Service是应用程序的核心组件,它们以松耦合的方式组合在一起构成了一个完整的应用程序,这得益于应用框架层提供了一套完整的机制来协助应用程序启动这些Activity和Service,以及提供Binder机制帮助它们相互间进行通信。 在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标...

2018-03-28 20:51:53 257

原创 对于面试:POST和GET请求方式的终极回答

针对网络请求中,请求方式POST和GET的区别?相比大家在面试中或多或少的遇到过,无论你是后端,前段,移动端。对于一些基本的区别我们多少都能说出一大段,可是每次回答完毕,经常看到面试官一副欲求未满的表情。那怎样才能是完美的回答呢。那么今天这篇文章就让我们来学习一番! GET和POST是HTTP请求的两种基本方法(其他的还包括:PUT,DELETE),最直观的区别就是GET把参数包含在URL...

2017-11-07 10:34:32 480

转载 Android 屏幕尺寸适配大全

在Android开发过程中,我们都知道为了屏幕适应不同屏幕的显示效果,通常我们需要设计师设计两套以上的切图。所以之前身为小白每当需求产生的时候,都牛气哄哄的说我们Android需要切多套图,但设计师后来找我要具体尺寸时,通常又会傻眼。虽然我也知道一些主流的尺寸,比如官方文档给出的 320 * 480 , 480 * 720,以及主流的屏幕尺寸 1080 * 1920 。但需要给出切图具体的一套具体

2017-05-12 15:47:57 5537

原创 解决 “IntelliJ IDEA 使用SVN版本控制频繁弹出输入 用户名和密码的弹框” 问题

在IntelliJ IDEA使用SVN进行版本控制开发时,遇到了一个每次 Subversion--Updata File 和 Subversion--Commit File时,就会频繁弹出需要输入用户名和密码的Authentication弹框,而且即便输入用户名和密码正确之后,仍然无休止的弹出。(真的影响开发心情)在网上找了好多解决办法,都没有得到有效的解决。解决办法:清理SVN  S

2016-12-17 13:46:02 25172 7

原创 Android应用冷启动解析和优化方案

前言 在我们点击Android手机桌面APP图标时,有时候我么会发现,应用并不是直接进入闪屏页或者应用主页面,而是会有一个短暂时间的白屏才能进去。但如果我们点击Back键退出应用,在点击返回的时候却没有白屏或者白屏时间几乎不可见。为什么会出现这种情况呢?这就涉及到Android应用冷热启动的问题。启动方式Android应用的启动方式可以分为三种:冷启动,暖启动,热启动;不同的启

2016-11-17 13:31:28 4085 1

原创 Android下Java多线程及线程池机制总结笔记

主线程和子线程           主线程是指进程中拥有的线程,在Java中默认情况下一个进程只有一个线程,这个线程就是主线程。主线程主要处理界面交互相关的逻辑。因为用户随时会和界面发生交互,因此主线程在任何时候都必须有较高的响应速度,否则就会产生一种页面卡顿的感觉。为了保持较高的响应速度,这就要求主线程中不能执行耗时的任务,就需要子线程来完成这些任务。子线程也叫工作线程,除了主线程以外的线程

2016-11-14 17:21:30 524

原创 AsyncTask异步任务机制源码分析和总结笔记

 概述 AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线中更新UI。从显现上来说,AsyncTask封装了Thread和Handler,通过AsyncTask可以更加方便地执行后台任务以及在主线程中访问UI,但是AsyncTask并不适合进行特别耗时的后台任务,对于特别耗时的后台任务,建议使用线程池。        A...

2016-10-21 12:55:14 613

原创 Android异步消息处理机制总结笔记

出现的原因解决子线程不能不能执行主线程中操作(主要是更新UI)问题。 更深次原因:Android机制下不允许将耗时操作放在主线程中执行(比如网络请求等),只能放在子线程中执行,如果在主线程中执行就会抛出异常( CalledFromWrongThreadException:Only the original thread thatcreated a view hierarchy ca...

2016-10-20 17:20:50 642

原创 仿简书APP富文本编辑器实现

最近看到了简书App中的编辑器可以实现字体的加粗,斜体,删除线等多种样式,而且可以插入图片,链接,分割线。支持字符串数据提交服务器,然后在TextView中直接展示。如果我们没有了解其中原理之前,感觉还是挺高大上的。然后我就打算仿照他写一个类似的给大家分享。开始我在网上找了一些类似的Demo,发现实现的关键原理是:通过WebView加载Html标签实现效果展

2016-10-17 15:49:50 21655 25

原创 Android RecycleView实现不同样式Item样式效果完美解决

在我们开发过程中经常会遇到需要我们展示不同样式列表的情况,通常我们都会使用ListView展示列表,然后实现BaseAdapter两个方法,即:getViewTypeCount() 和 getItemViewType(int position)即可实现不过在Android Nougat Google发布了RecycleView之后,大家都纷纷弃ListView ,GridView,而使

2016-10-14 18:44:49 15660 5

原创 Error:Execution failed for task ':app:clean'. > Unable to delete directory 终极解决方案

Information:Gradle tasks [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:assembleDebug]:app:clean FA

2016-09-29 15:50:17 19107 12

转载 改善Android Studio卡顿现象,提高Android Studio运行编写效率

为了赶上潮流(主要是手贱),把自己的Android Studio升级到了最高版本,当时是2.1.3。升级之后使用特别不爽快!更新的功能用了一段时间都基本能熟练掌握,但是有一个大Bug实在忍不了,那就是Android Studio使用起来变得特别的卡顿,绘制UI的时候随便写一个字母都会卡顿一下,有的时候移动鼠标都变得很卡顿。这就实在不能认了,多方研究和查询找打了一中解决方案。解决方案:

2016-09-28 13:25:30 7603

原创 百度地图 java.lang.UnsatisfiedLinkError 问题解决

java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.engine.JNIEngine.initClass:(Ljava/lang/Object;I)I

2016-09-26 14:04:27 3317

原创 Android Studio获取数字签名

在我集成百度地图API的时候,百度开放平台申请AppKey需要输入应用的SHA1值:之前用Eclipse时,应用的签名直接就可以可视化查看但是Android Stduio这点就比较特殊,不能直接可视化查询。不过也存在多种查询方式,这次我介绍一种最常见的:“命令行查询”第一步:打开cmd第二步:cd .android (

2016-09-26 10:50:29 903 1

转载 Android 内存泄露的检查分析方法

内存泄露问题我想是大部分开发者最不想遇见而又必须处理的问题,尤其Android中在对一个页面占用太多资源时经常会发生,下面我们就对内存泄漏这个难题进行分析一下。 一,什么是内存泄露?相交于其他开发语言,Java是有垃圾回收机制(GC)的,这样就使得Java程序员比C++轻松了很多,存储申请了,不用时刻注意在最后去释放资源(当然这是个好习惯)。Java虚拟机会开启一些回收线程兢兢业业不定...

2016-09-09 10:06:14 986

仿简书富文本编辑器

仿简书富文本编辑器,完美重现

2016-10-17

RecycleView实现多条目样式展示

2016-10-17

空空如也

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

TA关注的人

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