- 博客(159)
- 资源 (5)
- 收藏
- 关注

原创 Android 的App使用微信H5支付(亲测有效)
一、申请各种账号1、申请公司的商户号2、商户名称3、H5支付的域名(可申请多个 5个上限)二、核心代码class WXPayByWebViewActivity : BaseActivity() { var payUrl: String? = "" override fun onCreate(savedInstanceState: Bundle?) { ...
2019-03-27 17:24:06
1880
3

原创 Gson解析多种json格式
注意:在Androidstudio的App下build.gradle中添加Gson依赖compile 'com.google.code.gson:gson:2.8.2'一、中括号纯数组格式json:[ { "model": "123123", "modelId": 131123456413, "name": "Eillot",...
2018-08-16 00:05:59
801
原创 kotlin协程的使用详解
4)、lifecycleScope,只能在Activity、Fragment中使用,会绑定Activity和Fragment生命周期。1)、GlobalScope,声明周期是process级别,即使Activity或Fragment已经被销毁,协程任然在执行。3)、viewModelScope,只能在ViewModel中使用,绑定ViewModel的生命周期。2)、MainScope,在Activity中使用,可以在onDestory中取消协程。所有协程必须在调度器中运行,即使他们在主线程上运行也是如此。
2025-03-03 23:29:53
460
原创 kotlin的函数标准库使用
函数标准库常用的有:1、applyapply函数作为一个配置函数,可以传入一个接收者,然后调用一系列函数来配置它以方便使用,如果提供lambda给apply函数执行,它会返回配置好的接收者// 使用apply实现2、let能使某个变量作用于其lambda表达式里,让it关键字能引用。let和apply比较,let会把接收者传给lambda,而apply什么都不传,匿名执行完函数;apply会返回当前接收者,而let会返回lambda最后一行。/*** let使用*/it * it。
2025-02-27 22:43:44
290
转载 Android Touch事件分发和消费机制
好了,看完理论与代码结果,我想应该已经够直观的说明事件分发机制了。虽然在实际开发过程还是会遇到各种各样的问题,但是有了理论基础,处理起来应该不会太难。接下来我就总结一下一些比较重要的注意事项和结论。有些是书上的重要结论。如果在你不知道返回什么的情况下,记住如果是完全自定义View就返回true,如果是继承已有的控件或者View那就返回super;正常情况下,一个事件序列只能被一个View拦截,这是肯定的,因为某个事件被拦截后,只能通过这个拦截View来处理。当然前提是正常情况下。
2025-02-06 21:33:43
74
转载 synchronized 关键字锁的详解
Integer存在静态缓存,范围是-128 ~ 127,当使用Integer A = 127 或者 Integer A = Integer.valueOf(127) 这样的形式,都是从此缓存拿。如果使用 Integer A = new Integer(127),每次都是一个新的对象。此例中,两个对象实例的成员变量 lockObject 其实是同一个对象,因此实现了同步。所以此处关注是,同步代码块传参的对象是否是同一个。此处列举的是不同实例调用的情况。此处列举的是同一实例调用的情况。
2025-02-05 22:47:41
49
原创 Java静态代理和动态代理详解
静态代理是一种设计模式,通过创建一个代理类来实现对目标对象的代理。代理类和目标类实现相同的接口,通过代理类来间接调用目标类的方法,从而实现功能的扩展。2.
2025-02-05 14:57:54
867
原创 TCP和UDP介绍
TCP协议:基于连接举个例子:类似于打电话,电话接通、互相通话、结束挂断。TCP的三个特征:1)三次握手:是客户端和服务端建立连接的过程,解决网络信道不可靠的问题2)传输确认3)四次挥手UDP协议:基于非连接举个例子:类似于写信,对方是否收到、内容是否完整、顺序是否。正确UDP特征:把数据包简单封装下,通过网卡发出去,数据包并没有状态的链接。
2024-12-18 22:47:00
289
原创 android adb命令常用大全
14、如何全局搜索文件下所有的log日志。2)在顶部文件夹目录中输入”cmd"命令。2、dos窗口日志异常,使用命令清理下。3、直接在dos命令窗口查询某个关键字。10、强制拉起某个activity页面。9、强制关闭某个软件或者清除本地缓存。1)日志解压放到log文件夹中。3)在dos窗口里面进行搜索。11、查看某个应用的进程号。例如:demo 这个apk。13、查看设备屏幕像素密度。6、进入目录删除文件。12、查看设备分辨率。
2024-06-26 14:53:39
643
原创 Android安装提示“安装失败”、“应用未安装”——Android版本问题
【代码】Android安装提示“安装失败”、“应用未安装”——Android版本问题。
2024-04-21 17:32:32
448
1
原创 鸿蒙开发第一天
TypeScript具备面向对象变成的基本语法,例如interface、class、enum等,也具备封装、集成、多态等面向对象基本特性。模块可以相互加载,提高代码复用性。注意:在TypeScript中,空字符串、数字0、null、undefined都被认为是false,其他值则为true。TypeScript在JavaScript的基础上加入了静态类型检查功能,因此每一个变量都有固定的数据类型。TypeScript通常利用function关键字声明函数,并且支持可选参数、默认参数、箭头函数等特殊语法。
2024-01-02 23:15:35
3039
3
原创 Recyclerview属性配置记录
1、requiresFadingEdge:属性用来设置拉滚动条时 ,边框渐变的方向。2、fadingEdgeLength:用来设置边框渐变的长度。
2023-12-07 14:32:57
836
原创 MySQL学习day05
1、创建用户test,只能在当前主机localhost访问。作用:用来创建数据库用户、控制数据库的访问权限。2、创建用户test,能在任意主机访问。英/rɪˈvəʊk/
2023-12-06 22:12:36
463
原创 MySQL学习day04(二)
1、根据性别分组,统计男性和女性数量(只显示分组数量,不显示哪个是男哪个是女)5、年龄小于45,并根据工作地址分组,获取员工数量大于等于3的工作地址。2、两字段排序,根据年龄升序排序,入职时间降序排序。3、根据性别分组,统计男性和女性平局年龄。2、根据性别分组,统计男性和女性的数量。4、年龄小于45,并根据工作地址分组。1、根据年龄升序排序。
2023-12-03 23:18:17
733
原创 MySQL学习day04(一)
7、下面语句不报错,但查不到任何信息。9、年龄等于25或30或35。8、性别为女且年龄小于30。6、年龄在20到30之间。3)聚合查询(聚合函数)/之后的_不作为通配符。11、身份证最后为X。
2023-12-03 22:13:36
636
原创 MySQL学习day03
DML全称是Data Manipulation Language(数据操作语言),用来对数据中比哦啊的数据记录进行增删改操作。添加数据(INSERT修改数据(UPDATE删除数据(DELETE1)DML-添加数据insert into 表名(字段名1,字段名2,...)values(值1,值2,...);insert into 表名 values (值1,值2,...);
2023-11-27 22:54:52
665
原创 MySQL学习day02
create table 表名(字段1 字段1类型[comment 字段1注释],字段n 字段n类型[comment 字段n注释],)[comment 表注释];a)单行注释:-- 注释内容 或 # 注释内容(MySQL特有)字段1 字段1类型[comment 字段1注释],字段2 字段2类型[comment 字段2注释],字段3 字段3类型[comment 字段3注释],b)多行注释:/*注释内容 */4)DDL-表操作-数据类型。2)DDL-表操作-查询。3)DDL-表操作-创建。
2023-11-14 22:14:46
165
原创 MySQL学习day01
MySql数据库的启动和关闭:1)dos命令方法:2)使用命令的方式:1、方式一:MySQL提供的客户端命令行工具2、系统自带的命令行工具执行指令:3、配置环境变量:MySQL:是关系型数据库(RDBMS)
2023-11-08 22:24:05
256
转载 用Android Studio进行内存分析调试
打开Android Studio看下它的界面,在最底下可以找到 Android Monitor标签,点击打开它,如下图所示。第一个Memory就是用来监测当前程序的内存使用状态的,我们只看这个。有的人打开后可能只能看到Logcat模块,不要急,在logcat的最右边找找,看有没有一个小图标,有就点开它,立马就会出现Monitors模块。看看下面这个部分:代表监视器目前监测的手机。这里用来显示监视器正在监测的进程,点击右边的下拉箭头,可以选中某一个进程进行监视。
2023-03-21 21:01:31
2710
转载 详解Android 8.0以上系统应用如何保活 android应用保活方案
最近在做一个埋点的sdk,由于埋点是分批上传的,不是每次都上传,所以会有个进程保活的机制,这也是自研推送的实现技术之一:如…最近在做一个埋点的sdk,由于埋点是分批上传的,不是每次都上传,所以会有个进程保活的机制,这也是自研推送的实现技术之一:如何保证Android进程的存活。
2023-03-20 22:28:06
2008
1
转载 Android UI性能优化——ViewStub和Merge的使用
ViewStub虽然实现简单,但是源码设计巧妙。对于页面中的不常用布局使用ViewSutb懒加载有一定的优化效果。正确的使用merge可以有效的减少布局层级,提高页面渲染速度。但是merge使用限制比较多,应用场景比较少。
2023-03-20 22:18:51
1863
转载 阿里热修复Hotfix
移动热修复(Mobile Hotfix)是阿里云提供的全平台App热修复服务方案。产品基于阿里巴巴首创hotpatch技术,提供最细粒度热修复能力,让您无需等待实时修复应用线上问题。当产品已有功能出现问题,无需发版,即可发补丁,实时修复。
2023-03-20 22:01:34
977
转载 Android JNI(一)——NDK与JNI基础
NDK 其中NDK的全拼是:Native Develop Kit。那我们先来看下Android NDK官网是对NDK怎么解释的关键文字如下:Android NDK 是一套允许您使用原生代码语言(例如C和C++)实现部分应用的工具集。在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。简单的来说:Android NDK 就是一套工具集合,允许你使用C/C++语言来实现应用程序的部分功能。NDK 是Native Develop Kit的含义,从含义很容易理解,本地开发。
2023-03-19 22:47:24
266
转载 Android Studio 配置:自定义头部代码注释及添加模版
1、实现效果/*** 版权:xx公司 版权所有* 版本:1.0* 创建日期:2018/6/14* 描述:MainActivity*/2、实现步骤依次操作File -> Settings ->Editor ->File and Code Templates,在详细展示窗口点击includes选项卡,找到FileHeader点击,在编辑窗口输入自定义的注释模板即可。
2023-03-19 21:10:02
1844
转载 Android图片压缩(质量压缩和尺寸压缩)
图片有以下存在形式:1.文件形式(即以二进制形式存在于硬盘上)2.流的形式(即以二进制形式存在于内存中)3.Bitmap形式这三种形式的区别: 文件形式和流的形式对图片体积大小并没有影响,也就是说,如果你手机SD卡上的如果是100K,那么通过流的形式读到内存中,也一定是占100K的内存,注意是流的形式,不是Bitmap的形式,当图片以Bitmap的形式存在时,其占用的内存会瞬间变大, 我试过500K文件形式的图片加载到内存,以Bitmap形式存在时,占用内存将近10M。
2023-03-17 22:10:01
1132
转载 Android:这是一份很详细的Socket使用攻略
Socket的使用在Android网络编程中非常重要 今天我将带大家全面了解Socket及 其使用方法即套接字,是应用层 与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API)1、Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)2、即:通过Socket,我们才能在Andorid平台上通过 TCP/IP协议进行开发3、对用户来说,只需调用Socket去组织数据,以符合指定的协议,即可通信。
2023-03-17 21:52:29
7135
转载 内存溢出和内存泄漏的区别及详解
这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较常发性和偶发性内存泄漏它更难被检测到。从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。
2023-02-09 14:29:43
1145
转载 Android: Activity的启动流程(基于Android 13)
以上就是今天要讲的内容,本文仅仅简单地走了一遍在Android13中Activity的启动流程,只是有些许变化,整体流程思路还是和以前版本一致。想要了解源码思路,画时序图还是很有帮助的,跟踪代码不迷路。两块三刀。
2023-02-06 21:00:53
639
转载 Activity、view、window之间的关系
Activity是ui的框架 View是展示出来的视图 而view有多个 window主要是管理 View 的创建与删除,以及与 ViewRootImpl 的交互,将 Activity 与 View 解耦。Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图)LayoutInflater像剪刀,Xml配置像窗花图纸。2:这个PhoneWindow有一个“ViewRoot”,这个“ViewRoot”是一个View或者说ViewGroup,是最初始的根视图。
2023-02-06 16:49:44
202
原创 Framework 工作方式及原理,Activity 是如何生成一个 view 的机制是什么?
Activity 创建一个 view 是通过 ondraw 画出来的, 画这个 view 之前呢,还会调用 onmeasure 方法来计算显示的大小.Surfaceview 是直接操作硬件的, 因为 或者视频播放对帧数有要求,onDraw 效率太低,不够使,Surfaceview 直接把数据写到显存。所有的框架都是基于反射 和 配置文件(manifest)的。
2023-02-03 15:30:52
259
原创 MVC,MVP和MVVM框架之间的理解
LiveData是具有生命周期意识的一个可观察的数据持有者,ViewModel中的数据有LiveData持有,并且只有当Activity/Fragment处于活动时才会通知UI数据的改变,避免无用的刷新UI。1.使得M,V,VM的解耦更加彻底,在mvp模式中,p需要持有V的引用,才能去刷新UI,在MVVM模式中,View和Model使用databingding进行双向绑定,一方改变会直接通知另外一方,使得viewModel能专注于业务逻辑的处理,而不需要去关心UI刷新。UI和数据严格的分开。
2023-02-03 15:11:17
573
1
转载 kotlin协程学习理解
kotlin协程详解协程是什么?含义:其实就是一套有kotlin官方提供的线程API,即一个线程框架。协程有什么特点1、用同步的方式写出异步的代码(非阻塞式挂起)2、协程可以把运行在不同线程的代码写在同一个代码块里3、可以把两个请求合并成一个数据进行展示协程的使用时机:需要切线程或者指定线程的时候1、使用launch关键字创建函数,里面写上代码就能切线程,关键字的含义是我要创建一个新的协程并在指定线程上运行它。连续的代码段就是协程2、协程里的withcon
2021-09-17 22:36:19
444
1
原创 不同工程同一套代码(基础组件SDK一样)的使用
说明:有使用公司的代码要适应不同的地域的需求,需要在基础组件的基础上开发不同的App即不同的工程(请看下图),当两个工程用到同一套代码如何做到互不影响,请看下文代码1、第一步需要在AppbaseSDK中定义的类定义接口名称和方法public interface IPropertiesConfig { //是否需要显示XX信息 boolean isShowSomethingInfo();}定义一个注册类public final class Proper.
2020-10-18 21:26:57
434
转载 chmod命令详细用法
chmod命令详细用法指令名称 : chmod使用权限 : 所有使用者使用方式 : chmod [-cfvR] [–help] [–version] mode file…说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。参数 :mode : 权限设定字串,格式如下 : [ugoa…][[±=][rwxX]…][,…],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示
2020-07-29 22:43:38
457
原创 Android 集成友盟消息推送以及高级用法
集成准备前工作1、在友盟官方网站上注册账号,并创建应用注意:包名要和项目包名一直,不然推送手机无反应创建完成之后会生成appkey和Umeng Message Secret,保存好开发时要使用的2、开始集成SDK项目中使用的是手动集成,防止SDK版本号不小心升级带来不必要的麻烦1)访问【友盟+】官网组件化SDK下载地址,选择Android平台SDK...
2020-04-13 16:55:07
2053
转载 androidstudio内存占用极大的解决办法
修改一下这个参数:到 Android Studio 安装目录,找到bin/studio(64?).vmoptions(文件名可能因操作系统而不同,但大同小异),然后把 -xmx 后面的数字改大一点,比如 2048m 或4096m。-xmx 参数是 Java 虚拟机启动时的参数,用于限制最大堆内存。Android Studio 启动时设置了这个参数,并且默认值很小,没记错的话,只有 768mb。...
2020-04-08 10:33:15
10148
3
原创 Fragment好Activity之间的数据交换(传值)
1、Activity把数据传递给Fragment有时候从Activity跳转到fragment时需要传递参数,可以使用bundle的方式传递Activity中代码private fun initView() { fragments = ArrayList() if (fragments!!.isEmpty()) { fr...
2020-04-06 21:50:09
297
原创 android手机获取是否开启了底部导航栏
搜索了很多方法以及AndroidUtilCode里面的栏相关 ->BarUtils.java方法都不行(华为mate20 android10 系统)代码(说明BarUtils.getStatusBarHeight() 是AndroidUtilCode工具类 依赖 implementation'com.blankj:utilcode:1.25.2')@Tar...
2020-04-03 16:45:34
1185
1
原创 使用BaseRecyclerViewAdapterHelper和recyclerview时addData数据不能滚动
1、在项目中一个页面存在两个recyclerview,在底部recyclerview下拉刷新时,不能自动滚动代码如下:<com.scwang.smartrefresh.layout.SmartRefreshLayout android:id="@+id/refresh" android:layout_width="match_parent" ...
2020-03-23 23:11:15
602
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人