自定义博客皮肤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)
  • 收藏
  • 关注

原创 组件化框架 ARouter 完全解析(一)

我们从路由发起开始使,介绍了整个路由详细过程:moduelA通过中间人ARouter把路由信息的存到仓库WareHouse;moduleB发起路由时,再通过中间人ARouter从仓库WareHouse取出路由信息,这要就实现了没有依赖的两者之间的跳转与通信。其中涉及Activity的跳转、服务provider的获取、拦截器的处理等。需要重点理解的是:路由框架的整体思路,通过中间人ARouter使用WareHouse加载和获取路由信息;路由信息加载实现原理,各帮助类作用和路由完善过程。

2024-06-15 13:03:44 721

转载 Android组件化,全面掌握

组件化去除模块间的耦合,使得每个业务模块可以独立当做App存在,对于其他模块没有直接的依赖关系。此时业务模块就成为了业务组件。而除了业务组件,还有抽离出来的业务基础组件,是提供给业务组件使用,但不是独立的业务,例如分享组件、广告组件;还有基础组件,即单独的基础功能,与业务无关,例如 图片加载、网络请求等。这些后面会详细说明。组件化带来的好处加快编译速度:每个业务功能都是一个单独的工程,可独立编译运行,拆分后代码量较少,编译自然变快。提高协作效率:解耦 使得组件之间 彼此互不打扰,组件内部代码相关性极高。

2024-06-15 12:47:44 368

转载 Android实现无痕埋点具体实现-采用代码插桩的方式

a.gradle插件话埋点无需要手动埋点,采用字节码埋点,大大减少手动埋点的工作量;b.gradle插件话埋点不需要哦后期查补埋点;c.一些业务数据需要手动埋点;d.旧的页面项目升级时页面结构发生变化可能导致View的唯一路径发生变化,后台需要重新为此View命名;

2024-06-15 01:10:07 87

原创 Android gradle编译时字节码处理

android app的构建是使用工具,它提供给了开发者自定义编译期行为的能力。一般情况下,我们在transform阶段进行字节码的修改,插入,删除等操作。通过字节码处理,我们可以完成很多cool的事情,比如根据编译时注解,完成一些特定的操作等。实现修改字节码的工具有:javassist (如库 ‘org.javassist:javassist:3.27.0-GA’)( 如库’com.android.tools.build:gradle:3.6.4’)

2024-06-15 01:02:16 291

原创 Android 编译插桩操纵字节码

Transform 可以被看作是 Gradle 在编译项目时的一个 task,在 .class 文件转换成 .dex 的流程中会执行这些 task,对所有的 .class 文件(可包括第三方库的 .class)进行转换,转换的逻辑定义在 Transform 的 transform 方法中。从图中可以看出,Gradle 编译时多了一个我们自定义的 LifeCycleTransform 类型的任务,并且将所有 .class 文件名打印出来,其中包含了我们需要的目标文件 MainActivity.class。

2024-06-15 00:55:06 1018

原创 ASM 框架:字节码操作的常见用法(生成类,修改类,方法插桩,方法注入)

ASM是一款读写Java字节码的工具,可以达到跳过源码编写,编译,直接以字节码的形式创建类,修改已经存在类(或者jar中的class)的属性,方法等。通常用来开发一些Java开发的辅助框架,其做法是在你编写的Java代码中注入一些特定代码(俗称字节码插装)达到特定目的,以Android开发为例最常用的方法通过字节码插装实现热修复,事件监听,埋点,开源框架等非常规操作,当然在Android开发中通常辅以Gradle插件一起使用,这个改天在写。

2024-06-15 00:44:28 750

原创 ASM字节码操纵框架实现AOP

在该类中基本涵盖了各种JVM虚拟机的字节码指令以及操作码常量,后面的所有方法的执行,均需要调用该类中的字节码指令属性。在ASMified中可以清晰的发现,众多JVM虚拟机的指令集,如果还不清楚什么意思,建议复习一下哦。是目前我了解到的面试题或者笔试题中会经常出现的,不晓得咖啡BABE你是不是已经了如指掌了呢?我们对原始的Test01.java做下修改,引入MyTimeLogger中的方法。补充:其实在这里就可以看到,程序在编译期时,JDK已经做了相应的JVM优化。UP主你这也太拉了吧,真TM无情啊。

2024-06-15 00:31:21 632

转载 ASM字节码插桩解决国内隐私问题

对于大家自己项目内部的代码来说,可以自己手动改掉,但是对于一些用到的第三方库就束手无策了,也许这些库有隐私版本的更新,但是对大家来说,可能版本差距太大,项目改动会比较多,当公司老项目比较多时,这种修改方案就耗费时间太久了。方法获取 mac 地址,将每个地方这样的调用都替换成调用我们自己的方法,然后再在我们自定义方法里编写逻辑,比如隐私同意前给一个空值,隐私同意后再调用。在上面第3-4步的过程中,如果我们对.class 文件使用 ASM 进行处理就可以做到对任意 .class文件的修改,如下图。

2024-06-15 00:04:15 76

原创 Android 进阶——代码插桩必知必会&ASM7字节码操作

ASM 是一个Java 字节码(.class)操控框架,它可以用来动态生成类的字节码或者改变现有类的字节码。借由ASM可以直接创建或修改字节码文件,也就能在类被加载到JVM执行之前动态改变原有的类行为。其目的是生成、转换和分析以字节数组来表示的已编译 Java 类。因为无论是在磁盘的存储形式还是JVM的加载皆采用这种字节数组形式,Java 字节码文件按照Java 虚拟机规范中的格式进行组织并存储。

2024-06-14 23:56:53 191

转载 ASM 修复案例之 FCM OOM

使用ASM修复一些临时问题还是比较香的,体现了AOP的思想。比如慢函数检测,无侵入式埋点等等都可以使用ASM处理,后续有空可以补充这些内容。总的来说团队修复问题速度还是蛮快的!

2024-06-14 15:37:46 40

转载 AGP8.0 ASM 更简单灵活了

在之前《Gradle Transform + ASM 探索》一文中讨论了使用 AGP 提供的 Transform 接口自定义 Gradle 插件,通过 ASM 进行代码插桩。实现一些类似方法耗时统计,批量添加点击事件做埋点的功能。但是随着 AGP8.0 的到来,Transform 接口已经被废弃了,至于废弃的原因官方解释也是很官方了。说白了,就是不好用,传统的 Transform API 增加编译耗时。同时提供了更好用的 API 来规避一些编译时的问题。

2024-06-14 14:46:27 95

转载 使用ASM创建ClassVisitor时遇到IllegalArgumentException的一种可能解决办法

raft-java本身使用了5.2版本的asm,而我们的插装代码则使用了9.1版本的asm并在创建RaftDownClassVisitor和RaftDownMethodVisitor时将asm版本指定成了9.(上面的visitMethod方法意思为当程序执行到ServerMain类的函数时,其返回的函数会是我们的RaftDownMethodVisitor提供的修改过的函数。使用ASM时一个非常大的问题在于我们往往需要将自己的少量逻辑插入到复杂的目标系统中进行测试,而我们对目标系统却没有很深的理解。

2024-06-13 23:54:11 45

原创 ASM字节码插桩实现点击防抖

在点击事件onclick的时候,将view的onclick在给定的时间给拦截掉。以前我们可能都是用一个util来拦截,这样在每个点击事件都得去判断,那么这里就用字节码插桩的形式来实现一下。

2024-06-13 19:20:58 972

转载 Gradle插件 扫描class文件,使用Asm完成字节码插桩功能

1.其实主要看 transform 方法 ,在该方法中我们可以扫描所有javac编译后生成的class文件。2.主要分为两个循环,一个是当前模块下的内容,一个是它所依赖的所有模块文件,或jar包等 3.根据匹配规则,找寻我们需要被插桩使用的class文件。

2024-06-13 19:18:10 90

转载 字节码插桩实战(Gradle + ASM)—— 自动埋点

具体的顺序是。

2024-06-13 19:11:09 114

转载 字节码插桩实战——优雅的打印方法执行时间

做项目优化时,我们通常会先打印出方法的执行时间,再根据方法的耗时情况对其进行优化。//...System.out.println("程序运行时间: " + (endTime - startTime) + "ms");如果是一两个方法我们手动插入代码没有问题,但是整个项目的方法何其多,都要我们手动去插入的话,估计能把C、V两键扣废掉。那么有没有一种优雅的方式实现耗时打印呢?当然有的,这就是今天要介绍的主角ASM(字节码插桩)。有同学到这里可能就会问,我不会写ASM代码该怎么办呢?

2024-06-13 17:46:17 84

转载 Android 字节码插桩技术实现卡顿监控

字节码插桩早已不是什么新鲜的技术了,但时至今日仍然在广泛应用。它能鬼使神差一般改变我们的代码,实现一些功能让我们看不见摸不着。像Arouter、Hilt、Tinker、Matrix这些框架都在使用这项技术。字节码插桩是字节码编程的一个应用,这里主要是使用字节码编程技术。字节码编程能解决很多问题,比如自动生成class,自动修改字节码,自动添加日志代码,自动插入代码实现卡顿监控。笔者通过字节码插桩技术实现自动统计方法耗时,实现UI卡顿监控,通过这个案例了解字节码插桩的全过程。

2024-06-13 17:36:02 54

转载 Android编译期插桩,让程序自己写代码

Element是一种在编译期描述.java文件静态结构的一种类型,它可能表示一个package、一个class、一个method或者一个field。Element的比较应该使用equals,因为编译期间同一个Element可能会用两个对象表示。JDK提供了以下5种Element。十分简单,直接上代码通过上述分析,我们可以清楚的感知到AspectJ提供了非常强大的功能。

2024-06-13 17:28:28 65

转载 Android 使用APT+字节码插桩优化代码设计

在 BusinessLayer、BusinessCn、BusinessExp 中的各个 build.gradle 中都依赖 annotation 和 compile 两个 module@Register最后我们运行下代码,就能自动生成 CardManager 相关的代码,它在 build/generated/source/apt 目录下。我们来看下 BusinessLayer 的目录:其他 module 中也会生成类似的此文件,这里就不一一展示了。

2024-06-13 16:13:59 44

转载 TransformAPI + ASM实现自动插桩

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

2024-06-13 11:33:49 45

原创 反射埋点方案: 全局点击埋点代理OnClickListener SDK 编写

ASM是一个通用的 Java 字节码操作和分析框架。它可用于直接以二进制形式修改现有类或动态生成类。ASM 提供了一些常见的字节码转换和分析算法,可以从中构建自定义的复杂转换和代码分析工具。ASM 提供与其他 Java 字节码框架类似的功能,但重点关注性能。因为它的设计和实现尽可能小且尽可能快,所以它非常适合在动态系统中使用(但当然也可以以静态方式使用,例如在编译器中)。// 创建一个ClassWriter,用于生成字节码// 定义类的头部信息// 生成默认构造函数。

2024-06-13 11:24:18 683

转载 Android 基于Gradle 7.2+,自定义插件示例(实测7.4.2也可以运行)

结果,并不能运行那段命令代码,搜索了一堆资料,也没搞定,放弃了。看了官方的示例,把那段也注释掉了,真有意思,哈哈。* 在 manifest 文件中替换文本,得到了 app/build/intermediates/merged_manifest/staging/[build variant]ManifestUpdater/AndroidManifest.xml。创建变体还有一些简单的方式,我的示例中,试了 “构建变体,方式1、2、3” ,就定义在 app/build.gradle.kts 中。

2024-06-13 10:57:26 246

原创 写个代码扫描插件,再也不怕 log4j 等问题

Java ASM(Java Bytecode Assembler)是一个用于生成和修改Java字节码的库。ASM提供了一种灵活而强大的方式来分析、转换和生成Java类文件。使用ASM,我们可以在不改变源代码的情况下,通过操纵字节码来实现对代码的定制化需求。这种能力在许多领域中都有应用,包括编译器代码优化字节码工具AOP(面向切面编程)框架等。本篇到这里就结束了,严格而言,本篇其实算不上什么ASM高深技巧,只能算的上是基础操作。更多是希望,通过本篇,能使得新手同学对于ASM基础使用有一个了解,特别是在。

2024-06-13 10:52:43 932

转载 从开发一个插件看,安卓gradle插件适配AGP8.0

相信很多小伙伴项目还没有升级AGP7.0,可是最新的AGP已经到8.2了,适配AGP8.0也要提上日程了,尤其是一些插件项目,因为8.0删除了transform API,所以需要提前做好适配工作。如果你是一个插件小白,本篇可以教你从0开始在AGP7.0以上如何开发插件。如果你是一个插件开发者,相信本篇也可以给你适配AGP8.0带来一些帮助。以上就是如何开发兼容AGP8.0插件的全部内容了。

2024-06-13 10:50:12 457

转载 字节码进阶之java反射的底层实现原理

Java反射的底层实现原理主要涉及到Java的类加载机制和字节码操作。总结起来,Java反射的底层实现原理是通过类加载机制将类的字节码加载到内存中,并通过字节码操作解析和操作类的成员变量、方法和构造方法。这样就实现了在运行时动态地获取和操作类的信息。Java的反射机制允许在执行时查看和修改程序的行为。它使得Java代码可以动态地加载、探查、使用已编译的Java应用,也就是.class文件。下面是使用Java反射的示例和底层原理的解析。我们首先使用方法加载类。

2024-06-13 00:27:01 123

原创 从字节码分析synchronized的实现原理

前几个章节我们了解到Class文件的结构剖析,以及字节码的场景语句的底层原理,以及字节码中的指令的基本含义。本章节我们学以致用,来从字节码层面分析synchronized的实现原理。首先,我们来看一个简单的Code:0: aload_0 // 将"this"加载到操作数栈顶1: dup // 复制操作数栈顶的值2: astore_1 // 将操作数栈顶的值存储到局部变量表的第1个位置,也就是"this"3: monitorenter // 为对象(此处即"this")加锁。

2024-06-13 00:23:48 841

转载 字节码进阶之方法调用指令详解

Java字节码是Java虚拟机(JVM)执行的代码,它是由Java编译器编译Java源代码生成的。字节码可以在任何安装了JVM的平台上运行,这也是Java“一次编写,到处运行”的基础。在字节码中,方法调用指令是一类重要的指令,它用于调用Java方法。方法调用指令主要包括五种:invokevirtual、invokespecial、invokestatic、invokeinterface和invokedynamic。每种指令对应一种特定的方法调用场景。

2024-06-13 00:20:54 59

原创 字节码之 Lambda 表达式底层原理

前两章我们了解了JVM之所以夸平台的一个重要特性《字节码指令详解》、并且通过javap反编译了一些常见的java 语句的字节码指令(《常见java语句的底层原理》),了解了之所以这些语句举报那样的特性。今天我们继续学以致用从字节码指令层面聊聊Lambda表达式的底层原理。首先我们写一个简单的lambda表达式,并用javap命令反编译成字节码指令。(动态方法调用)是Java 7引入的一个新的字节码指令,目的是为了支持动态类型语言在Java平台上的执行。

2024-06-13 00:11:09 756

转载 字节码进阶之ASM字节码操作类库详解

在Java的世界里,一切都围绕着字节码进行。字节码,作为Java源代码到Java虚拟机(JVM)的中间表示,扮演了重要的角色。然而,直接操作字节码并非易事,需要深入理解JVM的工作原理以及字节码的细节。这就是ASM类库登场的地方。ASM是一个在Java中广泛使用的字节码操作和分析框架。它提供了直接操作字节码的能力,从而可以实现一些Java语言本身无法实现或者难以实现的功能。通过使用ASM,开发者可以动态生成类,修改已存在的类,优化代码性能,以及进行深度的代码分析。

2024-06-12 23:57:25 92

原创 字节码学习之常见java语句的底层原理

本章我们学以致用,聊一下我们常见的一些java语句的特性底层是如何实现。

2024-06-12 23:48:19 702

转载 字节码操作工具ASM API使用大全

这篇文章主要介绍ASM的api使用和一些JVM的字节码知识。基本上每一个方法都是对应了一个或者多个JVM指令,所以需要的时候查查文档就行了。先上一个思维导图,大致看下每个类的作用。

2024-06-12 23:21:52 64

原创 ASM-MehotdVisitor实践

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

2024-06-12 19:46:51 1040

原创 使用ASM来书写Java代码

ASM是一套JAVA字节码生成架构。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。 ASM 提供了与 BCEL( http://jakarta.apache.org/bcel )和SERP(http://serp.sourceforge.net/ )相似的功能,只有22K的大小,比起350K的BCEL和150K的SERP来说,是相当小巧的,并且它有更高的执行效率,是BCEL的7倍,SERP 的11倍以上。ASM一贯的设计思想就是将其应用于动态生成领域,因

2024-06-11 11:40:21 746

转载 i++ 和++i的字节码原理详解

一个关于i++和++i的原理详解,对字节码不太熟悉的可以先了解下字节码相关知识,因为从字节码角度更能理解两者的原理。

2024-06-11 10:30:03 44

转载 JVM笔记:Java虚拟机的字节码指令详解

因为。

2024-06-11 10:25:27 65

原创 Mac安装jadx并配置环境

​Downloadinghttps://formulae.brew.sh/api/formula.jws.json** homebrew 4.0报错​

2024-06-09 23:08:54 1404

转载 ASM核心API-元数据

在类定义当中使用范型时,需要增加Signature字段来添加范型信息。该Signature的组成是。

2024-06-07 18:39:29 40

转载 ASM核心API-类

对于转换部分或全部方法的常见转换,这一速度升幅度可能要小一些,但仍然是很可观的:实际上在 10%到 20%的量级。要确认所生成或转换后的类符合你的预期, ClassWriter 返回的字母数组并没有什么真正的用处,因为它对人类来说是不可读的。它的作用,简单的来说就是:在JVM执行main函数前动点手脚,自己实现一个Instrumentation的代理,在得到虚拟机载入的正常的类的字节码后,通过ASM提供的类生成转换后的字节码再丢给虚拟机。遗憾的是,这一优化需要将原类中定义的所有常量都复制到转换后的类中。

2024-06-07 18:31:02 54

转载 ASM核心API-方法

为了了解可以如何在 ASM 中实现它,可以编译这两个类,并针对这两个版本比较TraceClassVisitor 的输出(或者是使用默认的 Textifier 后端,或者是使用 ASMifier后端)。不存在用于捕获异常的字节代码: 而是将一个方法的字节代码与一个异常处理器列表关联在一起,这个列表规定了在某方法中一给定部分抛出异常时必须执行的代码。没有任何控制手段,现希望给operation()增加一些安全校验,判断这个方法是否有权限执行这个方法,如果有,则执行该方法;没有这个适配器,就需要在。

2024-06-07 18:25:46 47

原创 Java字节码编程之javassist

变量 是 所 有 参 数 的 缩 写 , 参 数 用 逗 号 分 割 , 例 如 : m ( 是所有参数的缩写,参数用逗号分割,例如:m( 是所有参数的缩写,参数用逗号分割,例如:m()相当于:m($1,$2,$3,…为了减少演示的复杂度,示例以及之后的操作,都在Maven项目下进行,因为我们可以直接引入依赖就可以达到我们导包的目的,很方便,不用再去下载jar包,然后自己手动导入了。这个原因我们前面其实提到了,因为在编译的时候,会把变量名抹掉,传递的参数会依次在局部变量表中的顺序。

2024-06-07 17:15:20 927

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关注的人

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