自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猿小蔡的博客

每一天都是值得期待的一天。

  • 博客(51)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android源码目录结构概览

Android源码的目录结构是为了组织和模块化不同层次的系统组件而设计的。

2024-07-20 18:56:39 226

原创 android工程中gradle编译时的所有task,打印其依赖和输入输出

【代码】android工程中gradle编译时的所有task,打印其依赖和输入输出。

2024-07-18 01:28:53 209

原创 常见的测试策略

测试策略是制定和实施软件测试计划的一部分,旨在确保软件产品符合质量标准,并满足用户需求和业务目标。

2024-07-17 23:17:14 723

原创 关于 LayoutInflater.inflate 的取值结论

时,返回的对象上则拥有根节点的布局参数。时,所返回的是不具备布局参数信息的根节点。

2024-07-15 04:01:57 157

原创 Windows文件无法固定到开始菜单

创建exe文件的快捷方式在exe快捷方式上右键 - 固定到开始屏幕任务管理器中找到windows资源管理器,右键,重新启动这时此文件会在开始屏幕找到。

2024-07-14 22:43:36 104

原创 Python实现批量下载文件

从配置文件或命令行参数读取下载任务列表,使用库读取配置文件,使用argparse库处理命令行参数。argparse。

2024-07-10 03:26:35 503

原创 Android Bitmap 和Drawable的区别

直接操作:Bitmap:允许直接操作图像的像素数据,适用于图像处理和操作。Drawable:无法直接操作像素数据,更适合于通用的图形绘制。灵活性:Bitmap:主要用于位图图像,较为简单直接。Drawable:抽象类,提供了更丰富的子类和功能,适用于更复杂的图形操作。内存管理:Bitmap:占用内存较多,需要手动管理生命周期(如调用recycle()方法)。Drawable:内存管理由系统负责,相对更加安全和方便。类型支持:Bitmap:仅支持位图图像。

2024-07-02 01:45:45 384

原创 Message的复用

不仅是Android开发中一个高效的消息创建策略,更是面向性能优化设计思想的典型体现。它通过简单而高效的对象池模式,最大限度地减少了对象创建的开销,展示了Android框架在细微处对性能极致追求的设计哲学。开发者应当充分利用此类API,以构建更加高效、响应迅速的Android应用。

2024-06-01 19:31:55 460 1

原创 Bash 脚本常用命令

示例:输出“Hello, World!中所有的“apple”替换为“orange”。Bash 脚本中也经常用到条件判断和循环结构。文件的第一列(默认以空格或制表符分隔)。文件的某个字段内容。示例:列出当前目录所有文件和文件夹。在 Bash 脚本中,你可以使用。示例:遍历当前目录下的所有文件。中搜索包含“error”的行。表示将第二列的值增加 5,然后。示例:查看当前目录路径。示例:切换到用户主目录。示例:检查文件是否存在。示例:从 1 数到 5。示例:创建一个新文件。

2024-04-18 01:55:43 586

原创 Android9.0以后不允许HTTP访问的解决方案

自 Android 9.0 起,默认禁止使用 HTTP 进行访问。

2024-03-30 00:18:16 1387 2

原创 Android混淆不要怕--一文搞定

默认的混淆规则,放在目录下进一步压缩代码混淆规则,但是会更加耗时,放在目录下proguard-rules.pro:自己写的混淆配置usage.txt :经过压缩过程被删除的类、方法、字段。mapping.txt :存储经过混淆过程,新旧类名、方法名、字段名的映射,软件发布一定要保留此文件,不然收集上来的报错信息,不知道具体是哪个类或方法,你将会很是头疼。seeds.txt :被 Keep 规则匹配到的类、方法、字段,来验证我们的 keep 规则是否合我们的需求。

2024-03-25 22:50:05 606

原创 Android 开发RxJava2常用操作符

当源 Observable 完成时,reduce 操作符才会发出结果。通过组合多个 Observables 的发射物来创建一个新的 Observable。当任意一个原始 Observable 发射一个新的值时,zip 操作符都会把所有其他原始 Observables 的值组合起来,并发射这个组合的值。在 Android 开发中,RxJava 2 是一个强大的异步编程库,提供了丰富的操作符来简化数据流的处理。创建一个新的 Observable,可以在 subscribe() 方法中定义回调函数。

2023-09-24 03:05:58 238

原创 一图使用Android Studio +MAT 分析内存泄漏工具

2023-08-26 01:17:09 202

原创 Android studio 2022.3.1 鼠标移动时不显示快速文档

在使用技术工具的过程中,我们时常会遇到各种各样的问题和挑战。最近,我升级了我的Android Studio到2022.3.1版本,但是在使用过程中,我碰到了一个让我颇为困扰的问题:在鼠标移动到类名或字段上时,原本应该显示的文档说明却消失了。在经过一番摸索和探索之后,我终于找到了解决办法,现在我将与大家分享这个问题的解决方法。

2023-08-24 00:46:07 1057

原创 win10、win11中Elan触摸板滚动方向反转、启动“双指点击打开右键菜单“、“双指滚动“

一、Elan启用"双指打开右键菜单"1.打开"运行",打开注册表 regedit.exe2.修改以下参数:HKEY_CURRENT_USER/SOFTWARE/Elantech/SmartPad/Tap_Two_Finger 值改为 1HKEY_CURRENT_USER/SOFTWARE/Elantech/SmartPad/Tap_Two_Finger_Enable 值改为 1二、Elan启用"双指滚动"1.打开"运行",打开注册表 regedit.exe2.修改以下参数:HKEY_CUR

2022-05-23 02:23:01 1746

原创 输入一个表达式(用字符串表示),求这个表达式的值。

在刷算法题的时候,碰到一道题,记录一下,题目是这样的。输入一个表达式(用字符串表示),求这个表达式的值。保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。看了一下解法,如下: Scanner scan = new Scanner(System.in); String input = s; input = input.replace("[","(");

2022-05-22 03:48:54 1418

原创 Windows 11快捷键功能大全

Windows 11快捷键功能的图,非常全面,有缺失的的欢迎留言补充。

2022-04-24 02:07:48 643

原创 Save Actions 配置与选项详解

Save Actions 是idea一款格式自动化的插件,非常好用。我的设置以下设置详解引用自链接:Save Actions 配置与选项详解,看完再也不迷惑了设置详解General 基本设置Activate save actions on save(before saving each file,performs the configured actions below)保存时自动格式化Activate save actions on shortcut使用快捷键保存时自动格式化使用场景

2022-04-24 01:34:24 1558

原创 Java自定义排序简单总结

Java自定义排序简单总结默认情况下:Java实现Comparator排序是升序,即自然排序根据参数,返回值来判断是否交换对于a,b两个参数(a在前,b在后)jdk官方的升序基于:< return -1> return 1= return 0降序就是反过来< return 1> return -1= return 0底层源码的实现可参考:java comparator 升序、降序、倒序从源码角度理解如果要升序:那么a<b就是想要的顺序,所以retu

2022-03-27 04:48:10 5139

原创 Android中将byte大小转换为KB、MB、GB等

代码示例。Formatter.formatFileSize(Context context, long sizeBytes)会根据传入的sizeBytes,自动将其转换为kb,mb,gb等单位。例如:100 B,1.00 kB,1.00 MB,1.00 GB,10.00 TB,10.00 PB

2022-02-12 17:11:13 2919 1

原创 for循环优化

for循环优化for循环查询数据时,在数据量大的时候,不同的写法在耗时上会有些差距。未优化的写法先添加一下数据private static List<String> getList() { ArrayList<String> strings = new ArrayList<>(); for (int i = 0; i< 1000; i++) { strings.add("" + i); } return strings;}pri

2021-11-20 21:13:51 614

原创 Lambda表达式的由繁化简推导

Kotlin中的函数参数类型为Lambda表达式时的由繁化简Lambda表达式的语法结构{ 参数名1:参数类型, 参数名1:参数类型 -> 函数体 }首先我们来看下下面这段代码,在集合中找到最长的字符val listOf = listOf("Apple", "Banana", "Orange")val maxOf = listOf.maxOf { it.length }println("maxOf $maxOf")maxOf函数中,接收的参数其实是一个Lambda的参数,上面是最简化

2021-09-29 00:43:34 295

原创 Java8新特性之Lambda表达式详解

什么是Lambda表达式?Lambda表达式是Java8新特性之一,Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。正所谓泡妞就看脸,问题抓重点。函数:是定义在类中的一段独立的代码块,用来实现某个功能。Java中,函数又被称为方法。总结:无名方法可传递的代码。Lambda表达式的条件什么样的代码才能被简化成Lambda表达式?被声明为函数式

2021-08-18 23:58:25 276

转载 通过fileProvider接收外部App传递文件路径的一些坑

问题由于Google的作死,现如今线版本的Android系统阻止了应用之间通过intent传递路径的行为,而通过此方法传递过来的路径会非常奇怪,直接获取会以类似如下形式表现:content://com.example.app.provider/storage/emulated/0/xxx...如果将它丢到new File(path)里则会导致出错,那么如何解决这样的奇葩路径呢?按照以往的方法,我们要读取到需要打开的文件的方法为:Intent intent = getIntent();if (i

2021-07-20 01:26:36 1207

原创 AIDL通信实例

文章目录AIDL服务端1.首先创建一个AIDL文件2.make project3.编写一个服务类客户端1.创建aidl文件2.创建Person类3.make project4.调用服务端AIDLaidl是Android进程间通信的一种方式,下面就介绍一个如何实现客户端与服务端的AIDL。服务端新建一个service的项目。1.首先创建一个AIDL文件文件名可以随便取,这里取一个ITest,点击finish之后,就会出现一个aidl的目录。ITest.aidl// ITest.aidl

2021-07-04 17:39:02 557

原创 Java中基本数据类型占几个字节多少位

字节字节:byte:用来计量存储容量的一种计量单位;位:bit一个字节等于8位 1byte = 8bit1b = 8bit(位)1Kb = 1024b1Mb = 1024kb1Gb = 1024Mb字节的单位就是B,1个英文字母一般是占1个字节(根据不同的编码),一个中文一般是2个字节。char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字。整型:byte:1个字节 8位 -128~127short :2个字节 16位 (-215~215-1)int

2021-06-27 18:00:48 1944

原创 一个注解完成Android权限申请

文章目录AspectJRxPermissionsAOPAOP应用场景AspectJ是什么?AspectJ怎样替我们实现AOP?使用添加依赖语法Android权限申请AspectJRxPermissions一个注解就能完成申请权限。@AndroidPermission(permissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE})public void

2021-03-12 15:05:11 394

原创 AndroidStudio4.1插件问题,parcelable插件

AndroidStudio升级到4.1之后,许多插件都不兼容,说的是只支持IDEA。有的甚至都打不开AndroidStudio。有2个解决方法找到AndroidStudio插件的目录,将有问题的插件都删除了。在这之前请先做一个备份,以便于之后去插件中心下载最新的。插件的目录不是之前的了,4.1已经更改了AndroidStudio配置的目录位置。位置地址如下:C:\Users\UserName\AppData\Roaming\Google\AndroidStudio4.1\plugins去An

2021-01-14 15:40:57 469

原创 TBS腾讯浏览服务静态集成,亲测可用,有demo

序言TBS的好处我就不多说了,此篇文章是关于TBS的静态集成,如果想要动态集成的话,可以参考我的另一篇文章TBS腾讯浏览服务接入以及遇到的坑。静态集成最大的坏处就是包会特别的大,应该会增加30M左右,如果不想要的话可以看我的另一篇文章。想要静态集成的伙伴多数都是因为有些时候,内核会因为一些不知道什么原因不会下载或者加载内核,但是如果是静态的话就一定可以使用x5内核。这个下载加载的问题,我在另一篇文章中也有解决方案。如果不想看下面文章的,可以直接下载我的demo,直接运行即可。想使用的话复制我里面的代码就

2020-12-28 15:05:27 4869 9

原创 常用正则表达式

1、匹配中文:[\u4e00-\u9fa5]2、英文字母:[a-zA-Z]3、数字:[0-9]4、匹配中文,英文字母和数字及下划线:1+$同时判断输入长度:[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}5、(?!) 不能以_开头(?!.*?$) 不能以_结尾[a-zA-Z0-9_\u4e00-\u9fa5]+ 至少一个汉字、数字、字母、下划线$ 与字符串结束的地方匹配6、只含有汉字、数字、字母、下划线,下划线位置不限:2+$7、由数字、26个英文字母或者下

2020-11-02 16:50:09 1029

转载 AndroidStudio中使用Debug

这可能是史上最详细的 IDEA 中使用 Debug 教程! Java后端技术 2019-08-25 09:19:00 ...

2020-10-23 16:52:35 5092

原创 Application创建以及Activity启动流程简析

APP启动流程创建Application首先每个APP都有一个main方法的入口,在Android中main方法是在ActivityThread中的。ActivityThread#mainpublic static void main(String[] args) { //代码省略}紧接着在main方法中实例化了ActivityThreadpublic static void main(String[] args) { //代码省略 ActivityThread th

2020-10-13 14:43:33 1001

原创 TBS腾讯浏览服务接入以及遇到的坑

TBS腾讯浏览服务接入TBS文档接入地址基本上的话照着这个文档接入是没有什么问题的,但是打开本地文件的时候,还是出现了一点小问题,因为文档里面没有说明。基础配置现在的Android开发都使用Android Studio了,所以只需要在app的build.gradle里面添加依赖,这份文章的日期是2020/9/30,最新id版本是下面这个api 'com.tencent.tbs.tbssdk:sdk:43939'权限配置<uses-permission android:name="and

2020-09-30 18:12:52 15245 13

原创 基于Kotlin+MVVM+LiveData基类的封装

前言Kotlin在国外已经非常流行了,好处不必多说了,如果不学习的话,那就只能落后了,那么迎娶白富美的机会可就少了许多。MVVM+LiveData也是目前比较流行的APP架构模式了,有必要学习一波。所以本着学习的态度,写了一个BaseModule,方便写新项目时可以直接依赖使用。废话不多说,开码。思路首先我的思路是这样的,有的Activity可能不需要ViewDataBinding,也有可能不需要ViewModel,也有可能都不需要,所以我的BaseActivity中,只加入了最基本的代码。然而有需要

2020-08-10 16:11:22 1751 1

原创 基于Android10的Activity的启动流程简析

启动Activity调用Activity的startActivity,最终都会调用startActivityForResultInstrumentationinstrumentation#execStartActivityActivityTaskManager.getService() .startActivity(whoThread, who.getBasePackageName(), intent, intent.r

2020-08-08 21:34:15 710

原创 Android 折叠布局,setPolyToPoly的使用

在查看Matrix相关资料的时候,发现了setPolyToPoly这个方法,可以实现折叠布局,觉得挺有意思的,就查看了相关资料。发现鸿洋大神写的一篇很不错,Android FoldingLayout 折叠布局 原理及实现(一),这篇文章是对鸿洋的这篇文章的一些补充吧,由于鸿洋的文章里的代码是在CSDN的,需要下载,所以我将代码上传至GitHub,MatrixPolyToPolyDemo,有兴趣的可以看看。还有一篇文章也不错,鸿洋的文章里也提到了,Android Folding View(折叠视图、控件),可

2020-05-21 14:11:07 1984 1

原创 在线浏览PDF,office文档

目前找到微软:https://view.officeapps.live.com/op/view.aspx?src=(输入你的文档在服务器中的地址); (测试没成功过,也许有人成功过)谷歌:https://docs.google.com/viewer?url=(输入你的文档在服务器中的地址); ( 翻墙,基本国内用不上)xdoc: http://www.xdocin.com/xdoc?_fu...

2020-03-23 22:43:36 603

原创 leakcanary-android 2.0使用极其遇到的问题

使用这个版本的leakcanary使用特别简单,只需要添加以下依赖即可。什么都不需要操作,不需要像之前的版本要在application里面进行初始化。如果没有什么特殊的需求,只需要以下依赖即可,就是这么神奇,至于原理什么的可看官网。还可以配置一些特殊的选项,比如错误发到服务器什么的,具体可看官网。leakcanary官网dependencies { // debugImplementati...

2019-11-07 18:57:23 3093 3

原创 Android 自动化打渠道包

本文基于Android studio3.4,JDK1.8,gradle-5.1.1-all。前言我们经常都会打包上线,然后大多数情况下也都是会有多渠道。按照以前的打包方式,太麻烦了,所以本文阅读了Android-解放双手之Gradle自动化打包实战(原创)一文后,设置了自己的打包方式。设置签名的配置首先要有签名的文件,在这里创建签名文件。怎么创建这里就不说明了。签名配置有两种方式第...

2019-05-08 16:02:49 668

原创 友盟自动集成

第一步在项目的根目录下repositories { google() jcenter() //加上这句 maven { url 'https://dl.bintray.com/umsdk/release' } }allprojects { repositories { google() ...

2019-04-16 18:23:21 959

plugins.zip

AndroidStudio4.2常用的插件

2021-08-04

plugins.zip

AndroidStudio4.2.2系统插件

2021-08-04

一款好用的在Windows上显示webp图片以及预览功能

最少要一个积分,没办法,都不能免费下载,无奈,不过真的好用

2018-09-26

DownloadManager

Android自带的DownloadManager的使用,十分的好用方便。

2018-06-04

Android studio 翻译插件

ECTranslation1.3是一款翻译的插件,下载此jar包,放在Android studio中通过plugins安装,安装过后重启studio,在选择plugins,选择ECTranslation更新,选择update,在keymap中,搜索Translate,就找到快捷键了,可以自行换快捷键,我是用`来作为快捷键。非常好用的一款翻译插件,可整句翻译

2018-01-03

空空如也

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

TA关注的人

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