自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dream It Possible

目标赋予我们生命的意义和目的。有了目标,我们才会把注意力集中在追求喜悦,而不是在避免痛苦上。

  • 博客(1898)
  • 资源 (224)
  • 问答 (1)
  • 收藏
  • 关注

转载 Java字节码修改神器HiBeaver:黑掉你的SDK

有时候我们在Java开发过程中可能有这样的需求:需要研究或者修改工程依赖的Jar包中的一些逻辑,查看代码运行中Jar包代码内部的取值情况(比如了解SDK与其服务器通信的请求报文加密前的情况)。这个需求类似于Hook。但是往往这些依赖的Jar包中的代码已经被混淆过,删去了本地变量表和代码行号等debug信息,所以无法直接断点调试,其内部逻辑和运行情况也几乎无法触及,研究更难以下手。这时候,一般的办法有二:1.将Jar反解为Java源码,以module方式引入,便可自由修改调试;

2024-06-07 14:38:55 95

转载 JVM可视化监控工具

命令行JVM插件官网下载nbm包后用于查找内存泄漏以及查看内存消耗情况对象A支配对象BJava堆篇//从网络中接收数据并保存到msg中saveMsg();//保存msg到数据库中12345678官网地址官方文档java -jar arthas-boot.jar --telnet-port 端口号 -http-port -1-b。

2024-06-07 10:02:22 179

转载 字节码指令

1、Java字节码对于虚拟机,就好像汇编语言对于计算机,属于基本执行命令。2、Java虚拟机的指令由1个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的0至多个代表此操作所需参数(称为操作数,Operand)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的结构,所以大多数的指令都不包含操作数,只有一个操作码,指令惨数都存放在操作数栈中。3、字节码指令集可算是一种具有鲜明特点、优势和劣势均很突出的指令集架构。

2024-06-07 00:09:41 142

转载 Class文件结构下篇

5、紧接着是0x2a,对应的指令为aload_0;如果方法表有Code属性存在,那么它的结构如下图,Code属性表的前两项跟属性表是一致的,即Code属性表遵循属性表的结构,后面那些则是他自定义的结构。2、attribute_name_index是一项指向CONSTANT_Utf8_info型常量的索引,此常量值固定为Code,它 代表了该属性的属性名称,attribute_length指示了属性值的长度,由于属性名称索引与属性长度一共为6个字节,所以属性值的长度固定为整个属性表长度减去6个字节。

2024-06-07 00:00:44 38

转载 Class文件结构上篇

1、Java 虚拟机不和包括Java在内的任何语言绑定,它只与"Class文件"这种特定的二进制文件格式所关联。无论使用何种语言进行软件开发,只要将源文件编译为正确的Class文件,那么这种语言就可以在Java虚拟机上执行。可以说,统一而强大的Class文件结构,就是Java虚拟机的基石、桥梁。所有的JVM全部遵守Java虚拟机规范,也就是说所有的JVM环境都是一样的,这样一来字节码文件可以在各种JVM上运行。

2024-06-06 18:16:36 49

原创 Java类加载过程

类加载过程:一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载 (Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化 (Initialization)、使用(Using)和卸载(Unloading)七个阶段,其中验证、准备、解析三个部分统称为连接(Linking)

2024-06-06 16:11:15 726 1

转载 ASM MethodVisitor实践

使用ASM几乎用户全部的精力都是对MethodVisitor的处理,方法code的处理都需要使用这个类进行操作。还是之前文章说过的,ASM单独学习意义并不大,难以达到触类旁通,先行掌握字节码基础后再玩起ASM才能体会真正的乐趣,不然真的蛮折磨人的。

2024-06-05 23:34:28 76

转载 Android Gradle——自定义Transform,使用Javassist工具插入和删除代码

在安卓中,难免会碰到需要动态插入代码,或者删除代码。这时候就需要用到自定义Transform任务,来对Class文件进行扫描和获取。可以插入的代码场景有哪些?例如:打印方法的执行时间等。可以删除的代码场景有哪些?例如:把代码中Log.e日志打印的代码去掉等先看下代码前后效果,原始代码如下:经过修改后(通过反编译apk得到源码):接下来,让我们看看如何对以上两个场景进行代码的插入和删除。

2024-06-05 23:16:25 88

转载 ASM 字节码插桩:助力隐私合规

针对以上两点问题有不同的应对措施以上应对措施如果单纯靠开发人员来肉眼识别代码和编码统计的话,工作量非常大而且也很不现实,因为一个大型项目往往都会引入多个依赖库和第三方 SDK,我们可以规范自有代码,但没法修改和有效约束外部依赖,也很难理清楚依赖库的内部逻辑和调用链关系。此外,当检测到隐私行为后,也要输出相对应的记录报告,以便开发人员能够在开发阶段排查问题。

2024-06-05 19:51:40 76 1

转载 ASM 字节码插桩:进行线程整治

文章中介绍了 AOP 技术的一种使用场景:线程使用数优化。看完之后感觉挺有实践意义的,但文章中并没有给出具体的实现代码,所以我就做了一次实操,基本实现了文章中介绍的效果,本文就来详细介绍下我的实现始末,并给出具体的实现代码。在实现 Android 端 APP 稳定性治理的过程中,和线程相关的 OOM 问题都是避免不了的。线程是一种昂贵的系统资源,其“昂贵”不仅在于创建线程所需要的资源开销,还在于使用过程中带来的资源消耗。

2024-06-05 19:41:39 66

转载 ASM 字节码插桩:实现双击防抖

最近打算通过字节码插桩的方式来实现一个应用的功能。简单来说,我希望通过字节码插桩的方式来为整个项目中所有使用了 OnClickListener 的回调方法中都插入一段逻辑代码,该段逻辑代码会对前后两次点击的时间进行判断,如果判断到时间小于某个阈值的话就直接 return一个大型项目经过长久迭代后,设置 OnClickListener 的方式往往会有很多种,可能是使用了多种扩展框架,也可能是同类代码有多种实现形式。

2024-06-05 17:34:16 57

转载 Java代码原来是这么执行的—怒撕字节码指令

Java虚拟机的指令是由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零个或多个代表此操作所需参数(称为操作数,Operand)而构成。由于一条虚拟机指令的操作码只用一个字节存储,因此Java虚拟机所能支持的指令最多256条。

2024-06-05 15:12:33 41

转载 深入理解字节码指令集及流程分析

上面的代码在内存中执行的情况如下:这个类文件中对应每一个方法还包含一个。

2024-06-05 14:56:58 64

转载 Android Gradle——Task基础和自定义Task

在Gradle中,学习和使用Task是我们必不可少的内容。什么是Task?Task就是一个操作,你可以用来移动复制文件、自定义输出打包apk文件名或者上传一些文件或者jar到Maven仓库等。再简单地说,可以理解成一个Java方法。Android中最常见的Task,如下:可以看到,他的任务就是删除根目录下的buildDir文件夹。接下来,让我们看看如何创建一个任务不知道你会不会有疑惑,task有doFirst,doLast方法,那任务执行中的方法在哪里?如果想知道答案的话,继续往下看。

2024-06-05 14:54:00 299

原创 Java字节码指令大全

这是oracle官方提供的java虚拟机指令集操作码与助记符的映射图,按类型进行了划分。

2024-06-05 13:41:03 682

转载 ASM 基础使用之代码修改

本篇我们将介绍如何用ASM工具对代码进行插入和修改。先说下我们这章节的任务,如下:对已有的Class文件的方法里插入方法执行时间的统计。

2024-06-05 13:15:30 243

转载 ASM基础使用之代码生成

clinit>代表的类的初始化方法,不同于,它不是显示调用的。注意:和执行的时机不一样,的时机早于,是在类被加载阶段的初始化过程中调用方法,而方法的调用是在new一个类的实例的时候。value:变量的初始值。注意:maxStack == 2,不是代表只有两个对操作数栈的指令,而是操作数栈容量大小为2,可以满足上面代码,例如下面代码,操作数栈大小为2也可以满足。看到下面,这才是我们需要的。

2024-06-05 10:50:01 114

转载 ASM之方法计时

第一点,从实现思路的角度来说,计算方法的运行时间,是在“方法进入”和“方法退出”的基础上实现的。在“方法进入”的时候,减去一个时间戳;在“方法退出”的时候,加上一个时间戳。第二点,我们提供了两种实现方式第一种实现方式,计算类里面所有方法的总运行时间第二种实现方式,计算类里面每个方法的单独运行时间其实,遵循同样的思路,我们也可以计算方法的运行的总次数;再进一步,我们可以计算出方法每一次的平均执行时间。作者:舍是境界。

2024-06-05 00:11:49 29

转载 ASM之打印方法入参和返回值

本文主要介绍了如何实现打印方法的参数和返回值,我们提供了三个版本:第一个版本,它的特点是代码固定、不够灵活。第二个版本,它的特点是结合Type来使用,为方法参数的“类型”和“数量”赋予“灵魂”,让方法灵活起来。第三个版本,它的特点是将“打印工作”移交给“专业人员”来处理。本文内容总结如下:第一点,从实现思路的角度来说,打印方法的参数和返回值,是在“方法进入”和“方法退出”的基础上实现的。在“方法进入”的时候,先将方法的参数打印出来;在“方法退出”的时候,再将方法的返回值打印出来。

2024-06-05 00:10:22 80

转载 ASM之修改已有的方法

第一点,在“方法进入”时和“方法退出”时添加代码,应该如何实现?在“方法进入”时添加代码,是在visitCode()方法当中完成;在“方法退出”添加代码时,是在visitInsn(opcode)方法中,判断opcode为return或throw的情况下完成。第二点,在“方法进入”时和“方法退出”时添加代码,有一些特殊的情况,需要小心处理:接口,是否需要处理?接口当中的抽象方法没有方法体,但也可能有带有方法体的default方法。带有特殊修饰符的方法:抽象方法,是否需要处理?

2024-06-05 00:07:32 82

转载 Gradle基础 构建生命周期和Hook技术

理解Gradle构建的生命周期是学习Gradle构建系统的基础,对于梳理构建系统执行流程以及编写自己的构建流程都是非常有帮助的,希望这篇文章能够帮助到迷茫的初学者。

2024-06-05 00:01:25 56

转载 Android Apk 编译打包流程,了解一下

作为一个Android开发,每天都会有相当一部分的时间花在编译打包上,如果项目比较大的话编译一次可能就要十几分钟。那么在编译打包的过程中AGP到底做了什么?为什么编译那么耗时,又该怎么优化?要解决这些问题,首先就需要我们对编译打包的流程有个总体的了解本文主要包括以下内容编译打包总体流程编译打包主要步骤编译打包过程中的Task本文主要详细介绍了打包编译的总体流程,主要步骤,以及AGP中相关的Task。

2024-06-04 23:01:03 162

转载 Android APK反编译&重签名&aab&apks转换

④、-Xss128k:设置每个线程的堆栈大小.JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右.这段命令是一系列在Windows环境下使用的批处理命令,旨在重命名一个.apks文件为.zip文件,然后使用WinRAR解压这个.zip文件,并最后删除原.zip文件和一个名为toc.pb的文件。

2024-06-04 20:31:26 259

转载 Kotlin版Gradle插件开发

Gradle 是一个开源的构建自动化系统,可以帮助我们操作构建的过程及其逻辑。例如,当我们构建一个Android 应用时,Gradle 会编译所有代码并为我们创建一个 APK。Gradle 分三个阶段评估和运行构建,分别是 Initialization (初始化)、Configuration (配置) 和 Execution (执行)在 Initialization (初始化) 阶段,Gradle 会决定构建中包含哪些项目,并会为每个项目创建 Project 实例。

2024-06-03 15:02:15 122

转载 ASM字节码插桩点击防抖以及统计方法耗时

Transform API 是 AGP1.5 就引入的特性,Android在构建过程中回将Class转成Dex,此API就是提供了在此过程中插入自定逻辑字节码的功能,我们可以使用此API做一些功能,比如无痕埋点,耗时统计等功能。不过此API在AGP7.0已经被废弃,8.0会被移除,取而代之的是Transform Action。

2024-05-31 17:30:36 93

转载 ASM应用与实践

Static Analysis 静态分析:序列化检查、检查是否存在调用不存在的字段或方法、隐私合规 Api 调用监测等等,都属于该应用范畴。AOP 面向切面编程:输出特定方法耗时、线上代码覆盖率监测等都属于该应用范畴。Hook:对原有代码逻辑做增强,一般实现手段有反射和静态/动态代理;线程重命名、点击防手抖、修复第三方库或系统 bug 等都属于该应用范畴。不在 ASM 的应用范畴里:动态分析。

2024-05-31 16:32:52 61

转载 深入探索编译插桩——ASM揭秘以及实战

最近在学习一些关于编译插桩方面的知识,说到编译插桩:大家可以想到的哪些关键字:Gradle插件ASMAspectJAOPJVM字节码等。其中用于字节码插入操作,而Gradle插件用于在编译期传入字节码.class文件和输出重编写后的字节码.class。而JVM字节码则关系我们具体插入代码如何实现。AOP则是一种面向切面的编程思想,如何理解切面:看下面图这幅图中,我们可以针对所有方法起始位置和结束位置做一些操作,如统计方法时常等操作,打印方法日志。这里的起始位置和结束位置就是一种切换编程实现,简称AOP。

2024-05-30 17:36:49 80

转载 深入探索编译插桩——app打包编译

现如今随着组件化, 插件化框架以及热修复,AOP编程等高级用法的新起,不得不驱使大家去了解更加底层的原理,前面文章介绍了关于JVM字节码的理解,这篇文章笔者就来讲解下我们apk从编译到安装的过程。首先来了解下我们apk的成员如MD5加密后的字符串就是一个消息摘要 特点:可以保证数据完整性,但是无法保证数据安全性和不可篡改性。

2024-05-30 10:11:12 57

转载 ASM字节码插桩:打印方法名、入参、返回值、方法耗时

AdviceAdapter本身继承了MethodVisitor,提供了onMethodEnter()和onMethodExit()方法,分别表示方法进入和方法退出,方便添加我们自定义的处理逻辑。执行main方法,查看被修改后的Hello.class,可以看出已经在方法进入和退出前添加了,打印入参、返回值和耗时的方法。

2024-05-29 20:46:08 94

转载 ASM字节码插桩:方法添加TryCatch捕获异常并打印

执行main方法,查看被修改后的Hello.class,可以看出已经在方法中添加了try-catch和exception的信息打印。监控 -> [方法名:compute,异常信息:/ by zero]监控 -> [方法名:div,异常信息:/ by zero]使用ASM为方法添加try-catch代码块。进行字节码插桩后达到下面效果。比如有一个Hello类。

2024-05-29 20:28:13 102

转载 一步一步跟我ASM实战

在 Android 开发中,要想使用 ASM 库来开发自己的字节码插桩库,需要 Hook Android 的编译流程,基于 Gradle(Gradle 是基于 Groovy 语言来开发的) 的API 来实现 class / lib 文件的遍历与操作。Hook Android 的 Transform 阶段:transformClassesWithDexBuilderForXXX(XXX 即是 buildTypes 对应的环境)(不用翻墙) 查阅 Google 官方的。

2024-05-29 18:08:14 96

转载 Android 插桩之美,全面掌握!

我们来学习一下最复杂的但是应用最广泛的 GradlePlugin 的定义:Step 1 : 创建一个 module Java 或者 Libray 都可以,最后都得大改。​定义 gradle 目录,添加 groovy 语法需要的相关依赖这样后面写 groovy 文件代码才有提示。这点 intelli IDEA 支持得更好,gradle 结构如下,脚本很简单。就是提供了对 groovy 的支持,记得 sync。scss复制代码。

2024-05-29 17:40:47 240

转载 TransformAPI + ASM实现自动插桩

它里边有一个accept这样一个api,通过里边的ClassVisitor,可以用来访问类,访问方法,访问注解,或者操作他们。其中,transform是固定的;整体结构就是,通过注解标记哪些方法需要插桩,完成插桩代码编写之后,通过Transform遍历class插桩代码插入到class文件中。这也是需要的,因为我们改完之后的代码需要被加载进入dex文件才能正常运行,实现编译时修改代码的能力。我们在进行插桩的时候,需要对照表,System是一个对象,因此需要在最前边加上L, ()J表示一个方法的签名标识。

2024-05-29 16:27:30 47

转载 彻底搞明白Android字节码插桩

1、继承DefaultTask。2、声明task执行方法,方法名随意,必须加上@TaskAction注解。3、创建自定义task的时候 指定task类名。4、Gradle 自带的有 Delete、Copy、Zip 等等。/*** 自定义task*///方法名随意 只要加上TaskAction注解println("自定义task 执行")

2024-05-29 14:41:42 198

转载 ASM字节码插桩

ClassWriter(ClassWriter.COMPUTE_FRAMES),这个ClassWriter的flag参数,建议设置COMPUTE_FRAMES,按照官网所说,性能虽然差点,但是可以自动更新操作数栈和方法调用帧计算,这时候methodVisitor.visitMaxs(0, 0)里面的参数就可以随便写了,但这个方法必须要调用,不然即使生成了class,在执行这个class中的方法时会报错。ASM提供了一些常见的字节码转换和分析算法,可以从中建立自定义的复杂转换和代码分析工具。

2024-05-29 13:54:37 60

转载 字节码插桩 -- 入门篇

Android Studio --> File --> New --> New Module --> Java or Kotlin Library --> plugin(名字自取)/***/api: Int,/*** 方法开始执行*//*** 方法执行结束*/"append",",false"append",",false",false"d",)I",false。

2024-05-29 11:25:18 114

转载 Gradle统一管理依赖

那我们可以把 Version Catalog 发布到远端,其他项目需要时直接依赖然后使用即可,这样就很方便的实现了版本的统一以及快速依赖了。缺点: 在 module 的 build.gradle 中使用时,不支持代码提醒,不支持点击跳转,多 moudle 开发时,不同 module 的依赖需要 ctrl+c/v 导致开发的效率降低。Android 发展至今,各种新技术层出不穷,版本管理也出现了很多方案,这些方案并没有绝对的优劣,还是需要结合实际项目需求来选择的,但是新的方案还是需要学习了解的。

2024-05-29 10:43:33 168

转载 Java和Android的类加载器和类加载机制详解

我们的应用程序都是由这3中类加载器互相配合进行加载的,如果有必要,还可以加入自己定义的类加载器。开发人员可以通过继承 java.lang.ClassLoader类,重写findClass()方法,调用defineClass()方法的方式实现自己的类加载器,以满足一些特殊的需求。为什么会有自定义类加载器?一方面是由于java代码很容易被反编译,如果需要对自己的代码加密的话,可以对编译后的代码进行加密,然后再通过实现自己的自定义类加载器进行解密,最后再加载。

2024-05-28 14:59:11 74

转载 Java JVM的类加载过程详解

根据《Java虚拟机规范 Java SE8》版规定,类或者接口的加载过程分为 加载(Loading)、链接(Linking)、初始化(Initialization)。其中链接(Linking)又可以分为: 验证(Verification)、准备(Preparation)、解析(Resolution)。加载是根据特定名称查找类或接口类型的二进制表示(binary representation), 并由此二进制表示来创建类或接口的过程。

2024-05-28 00:09:54 41

转载 Java的 Class字节码文件结构和内容全面解析

Exceptions 属性表中, attribute_name_index 指定了属性的名称, 它为指向常量池的索引,恒为“Exceptions",attribute_lengt表示属性长度, number_of_exceptions表示表项数量即可能抛出的异常个数,最后exception_index_table项罗列了所有的异常,每一项为指向常量池的索引,对应的常量为CONSTANT_Class_info,表示为一个异常类型。而这里的最大长度就是length的最大值,既u2类型能表达的最大值65535。

2024-05-27 10:30:09 61

Android将list数据通过LitePal保存到本地(集合保存到本地)

有时候我们需要将list集合保存到本地,自己写起来太麻烦,就找到了强大的框架LItePal Git地址 https://github.com/LitePalFramework/LitePal

2016-06-17

AndroidDownLoad-多线程断点续传下载

什么是多线程下载? 多线程下载其实就是迅雷,BT一些下载原理,通过多个线程同时和服务器连接,那么你就可以榨取到较高的带宽了,大致做法是将文件切割成N块,每块交给单独一个线程去下载,各自下载完成后将文件块组合成一个文件,程序上要完成做切割和组装的小算法 什么是断点续传? 断点续传,就是当我们下载未结束时候,退出保存下载进度,当下次打开继续下载的时接着上次的进度继续下载,不用每次下载都重新开始,那么有关断点续传的原理和实现手段 http://blog.csdn.net/jdsjlzx/article/details/41014021

2016-06-14

DownloadEngine-Android多线程下载断点续传

商业级别的范例,集支持多线程下载,断点续传,只使用wifi网络下载,显示下载速度,人性化提示及超强的容错机制多功能于一体,绝对的实用,绝对的专业。

2016-06-14

MulThreadDownloader-Android实现网络多线程断点续传下载

Android实现网络多线程断点续传下载

2016-06-14

android-rsa-http

对url的path段进行rsa加密 博客:http://blog.csdn.net/jdsjlzx/article/details/51644798

2016-06-12

android自定义ProgressBar(仿淘宝)的加载效果

android自定义ProgressBar(仿淘宝)的加载效果

2016-06-11

RxJava封装、离线缓存、在线缓存时间控制

http://blog.csdn.net/adzcsx2/article/details/51333890 代码修复版本

2016-05-24

RxJava在Android中内存泄漏解决以及RxJava的封装

RxJava在Android中内存泄漏解决以及RxJava的封装 原文:http://blog.csdn.net/adzcsx2/article/details/51333890 原作者的demo运行有点问题,本人修复重新上传。

2016-05-23

Android RecyclerView实现了下拉刷新和上拉加载

Android RecyclerView实现了下拉刷新和上拉加载,不需要其他控件辅助。

2016-05-23

Android H5做的商城客户端

H5做的商城客户端,效果和android原生客户端没多大区别 详细:http://blog.csdn.net/jdsjlzx/article/details/51283543

2016-04-29

Android下的图片压缩及图片和视频的上传

Android开发中上传图片很常见,一般为了节省流量会进行压缩的操作,Android下的图片压缩及图片和视频的上传

2016-04-19

Android通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比

在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新。在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一是通过AsyncTask来实现,另一种方式则是通过ThreadPool来实现。 http://blog.csdn.net/jdsjlzx/article/details/43682351

2016-03-31

Android Bluetooth蓝牙通信文件传输

Android Bluetooth文件的引入和传输,可使用两台设备,一个做客户端一个做服务端,传输文件,显示传送进度。 http://download.csdn.net/download/u010963246/8907157

2016-03-27

Android蓝牙聊天程序的扩展开发(基于Google Sample,类QQ设计)

Android蓝牙聊天程序的扩展开发(基于Google Sample,类QQ设计) 原作者:http://my.oschina.net/sikilao/blog/488331

2016-03-26

Android蓝牙聊天程序优化版

Android蓝牙聊天程序的扩展开发(基于Google Sample,类QQ设计) 原创作者链接:http://my.oschina.net/sikilao/blog/488331

2016-03-26

universal-image-loader-1.9.5.jar

universal-image-loader-1.9.5.jar

2016-02-27

Android 二维码扫描怎样实现第二次(重复)扫描

Android二维码扫描怎样实现第二次(重复)扫描

2016-02-16

Android 通过Socket 和服务器通讯

Android 通过Socket 和服务器通讯,是一种比较常用的通讯方式,时间比较紧,说下大致的思路,希望能帮到使用socket 进行通信的人 (1)开启一个线程发送消息 SocketOutputThread 消息是放在队列里的,当有消息后,进入队列,线程唤醒,发送消息,并反馈发送是否成功的回调 (2)开启一个线程接受服务器消息 SocketInputThread 为了防止一直收数据,浪费电池的电,采用NIO的方式读socket的数据,这个是本文的关键 (3)开启一个线程,做心跳,防止socket连接终断 , SocketHeartThread (4)构建 SocketThreadManager对以上三个thread进行管理 (5)构建 TCPClient 发送socket消息 在NIO的方式实现TCP,特别是在接收服务器的数据,不用写个线程定时去读了。

2016-02-16

android RangeSeekBarView 选定范围值的控件

实现了一个选定范围值的控件,刻度尺为等分的100等分。模仿二手车app中筛选选定区间的控件。 原创链接:http://download.csdn.net/detail/huweigoodboy/8508243

2016-02-01

Android仿天天动态上拉播放界面控件

仿天天动态上拉出现播放界面(修改) 效果:1,在Content未展开的状态(隐藏): 1>点击Handler控件,弹出Content。 2>拖动Handler,Content会从底部逐渐出来。 2,在Content展开的状态: 拖动Content,content位置随着手指的滑动而产生位置变化。 原创:http://download.csdn.net/detail/huweigoodboy/8372255

2016-01-31

RecyclerView的四级缓存源码分析

RecyclerView 四级缓存

2023-03-21

Flutter编程指南-多线程

Flutter是Google开发的新一代跨平台方案,Flutter可以实现写一份代码同时运行在iOS和Android设备上,并且提供很好的性能体验。 在Google刚推出Flutter时,其发展很缓慢,终于在18年发布第一个Bate版之后迎来了爆发性增长,发布第一个Release版时增长速度更快。可以从Github上Star数据看出来这个增长的过程。在19年最新的Flutter 1.2版本中,已经开放Web支持的Beta版。 目前已经有不少大型项目接入Flutter,阿里的咸鱼、头条的抖音、腾讯的NOW直播,都将Flutter当做应用程序的开发语言。除此之外,还有一些其他中小型公司也在做。Flutter越来越变成一个新的开发趋势。

2022-02-21

java数据结构与算法之美(物超所值)

数据结构与算法之美教程分为 4 个由浅入深的模块:入门、初级、高级、实战。 高级篇将从概念和应用的角度,深入剖析一些稍复杂的数据结构与算法,推演海量数据下的算法问题解决过程;帮你更加深入理解算法精髓,开拓视野,训练逻辑;真正带你升级算法思维,修炼深厚的编程内功。 实战篇将通过实战案例串讲前面讲到的数据结构和算法;并拿一些开源项目和框架,剖析它们背后的数据结构和算法;并带你用学过的内容实现一个短网址系统;深化对概念和应用的理解,灵活使用数据结构和算法。

2022-02-09

flutter_macos_2.8.1-stable.zip

Flutter 的 Stable channel 是相对稳定的发布版本,最新版本是2.8.1。 官网下载速度慢还容易失败,有需要的下载即可。

2022-01-05

mac_apktool.zip

MacOS下用的APK逆向工程工具 本工具分两个版本:一个是图形化版本Android-Crack-Tool,易操作;一个是命令行版本; 使用参考:https://www.jianshu.com/p/56ea01d7ccac

2021-03-25

Postman-osx-5.3.2 for Mac

Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口。 这里提供的是Mac下的Postman安装包。

2017-10-31

Android 三种方式实现自定义圆形页面加载中效果的进度条

Android 三种方式实现自定义圆形页面加载中效果的进度条

2016-12-19

CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar

Android Material Design之CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar http://blog.csdn.net/jdsjlzx/article/details/50421349

2016-08-19

android自定义进度条渐变色View的实例代码

这个自定义的view,完全脱离了android自带的ProgressView,并且没使用一张图片,这样就能更好的降低程序代码上的耦合性! http://blog.csdn.net/jdsjlzx/article/details/49586339

2016-07-26

Android多行文本折叠展开效果

- 单行文本水平触摸滑动效果 通过EditText实现TextView单行长文本水平滑动效果 - 多行文本折叠展开 自定义布局View实现多行文本折叠和展开 详见: http://blog.csdn.net/jdsjlzx/article/details/45821909

2016-07-25

Android封装popwindow类(下拉菜单弹出和收缩效果)

popwindow 实现下拉菜单的弹出和收缩效果 http://blog.csdn.net/jdsjlzx/article/details/52000107资源

2016-07-22

Android自定义spinner下拉框

Android自定义spinner下拉框实现的实现 http://blog.csdn.net/jdsjlzx/article/details/41316417 请支持原创:http://blog.csdn.net/geniuseoe2012/article/details/8723702

2016-07-16

Android DigitalClock实现倒计时

应用案例: 大量商品的限时抢购等。 类似于这样的倒计时,不知道大家有没有遇到过,大家又能想到哪些方案????? 1、每一秒到服务器上面去取一次数据? 2、每一秒,通过一个Handler去循环遍历,对每一条去刷新一次时间控件? 3、还是大家有其它的想法。 上述两种方案都不可取: 1、网络连接有时间差,况且数据访问量大的情况,服务器没法承受。 2、 循环遍历可行,但是要在数据量少的情况下,如果数据量过大,那么会卡屏,对系统内存的占用也较高。 本源码的方案是对Android 系统中 DigitalClock 进行一次封装。 通过继承以下方法并改变内部的实现。

2016-07-12

Android 带箭头有光晕效果的ProgressBar

Android 带箭头有光晕效果的ProgressBar(Android Studio版本) 原文:http://blog.csdn.net/ekeuy/article/details/39228285

2016-07-04

android webview与 js交互通信

webview与js的交互。 其实这个demo完全可以在客户端实现相同功能,这里只是学习交互如何实现的。并且用html动态加载会比较灵活,可以在服务端随时更新样式。没有公网服务器,我把网页放在assets中,不过不影响的。

2016-06-20

Android项目webview中做与js交互

Android项目webview中做与js交互,涉及到js中调用Android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。 http://blog.csdn.net/jdsjlzx/article/details/7254875

2016-06-20

Android socket通信长连接(心跳检测)

Android的socket长连接(心跳检测),有服务端和客户端 。开发环境eclipse,不可多得的客户端与服务器端代码

2016-06-17

Android客户端提供Socket服务与pc通过USB通信

Android手机和电脑通USB线连接,手机里面的app作为Socket的服务器端,PC作为Socket的客户端,两者进行通信。

2016-06-17

Android 使用Socket,ServerSocket编程网络通信

Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建 立基于UDP协议的网络通信

2016-06-17

Android socket即时通信Demo

基于tcp和udp的即时通信源码,以及实现原理说明和截图。 当然socket不仅仅可以用来做聊天,如usb连接和wifi通信等都可以用socket来实现,此源码功能实现非常详细,不可多得!

2016-06-17

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

TA关注的人

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