自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Android 事件的分发和消费机制

【代码】Android 事件的分发和消费机制。

2024-05-16 23:03:57 374

原创 ViewPager2 解决Fragment数据不刷新的问题

一、前言在最近使用ViewPager2显示多个Fragment的时候遇到一个问题,就是我在删除某个fragment的时候发现更新适配器后页面并没有和如期的一样删除这个fragment,看下到底发生了什么?二、问题剖析一般我们刷新页面常用的方法是调用适配器的方法,我们先看下的适配器更新方法都干啥了?可以看出,更新调用的是的适配器方法,所以从这里我们也可以很直观的知道,跟不一样的是使用的适配器不一样,是基于的适配器策略基础上实现的,在这里就不细说了。先看这个方法,从上面可以看出,适配器内部用。

2024-04-26 16:01:21 456

原创 android 支付宝支付接口开通流程

验签过程支付宝AlipaySignature类提供了验签方法RSACheckV1和RSACheckV2,区别就不细说,这里使用RSACheckV1方法,第一个参数便是支付宝返回的异步通知结果,第二个参数传入支付宝公钥,同样最后一个参数传false从代码读取支付宝公钥,传true从pem 文件中读取。在App内集成支付宝支付。支付宝公钥需要上传应用公钥获取,如果不使用pem文件,代码中直接放上支付宝公钥就行,如果要使用pem文件,可以将应用公钥的pem文件复制一份,将密钥内容换成支付宝公钥的,格式如下。

2024-04-16 22:44:52 708

原创 Android13 行为变更及新特性

如果您的应用使用已废弃的 android:sharedUserId 属性,并且不再依赖于该属性的功能,您可以将 android:sharedUserMaxSdkVersion 属性设置为 32,这个新属性会告知系统,您的应用不再依赖于共享用户 ID。此列表的标签为使用中的应用。当您的应用向以 Android 13 或更高版本为目标平台的其他应用的导出组件发送 intent 时,仅当该 intent 与接收应用中的 < intent-filter > 元素匹配时,系统才会传送该 intent。

2024-04-06 14:01:39 426

转载 OkHttp3+Retrofit添加缓存

最近要对接口做一些优化,于是就想着给一些频繁获取数据的接口加上缓存功能,网上搜上一搜,一般都只支持GET请求,但是因为服务器那边接口比较特殊,参数较多的获取数据接口都是用的POST,用原生的缓存方式还不行。那只能自己实现一个,支持GET、POST请求方式,为了安全还要支持缓存数据加密,放到项目里试了试,还算比较稳定,于是便有了此篇文章。实现一个简单的接口请求,访问百度页面,然后测试下缓存的效果:主要看下getOkHttpClient()方法:代码不是很多,加密的逻辑放在SecurityUtils

2024-03-19 22:12:06 50

原创 Retrofit示例 ,Retrofit 注解学习

这里我们使用http中的get 方法获取users这个接口下,当前user的具体信息,参数为当前user名。返回内容为Http请求的ResponseBody。为网络请求结果json数据所对应的实体类。通过这段代码,我们在最终的回调方法里可以友好的处理请求结果,失败时onFailure方法执行。成功时,onResponse方法执行,我们在这里用Gson解析返回的数据,并进行UI更新操作(setUserView(bean)),

2024-03-07 20:45:00 981

原创 kotlin协程 Flow数据流

Flow是kotlin协程中的流。RxJava就是流式编程的库。Flow属于冷流对应RxJava中的Observable Flowable Single MayBe和Completable等。Kotlin协程中的热流实现MutableSharedFlow和MutableStateFlow等,对应RxJava中热流PublisherSubject和BehaviorSubject。

2024-02-29 21:53:53 383

原创 kotlin reified函数封装activity跳转

中使用特殊类型参数的方法,类型参数在编译时会被替换为限制于activity的子类,使Java 代码可以调用带有类型约束的 Kotlin 方法。),这意味着我们可以在函数中得到并使用范型类型的Class。Anko提供了简单得多的方式通过。在Kotlin中,一个内联()函数可以被具体化(

2024-02-19 20:45:00 191

原创 kotlin invoke操作符实现接口回调

我们只需要在一个类中使用operator来修饰invoke函数,这样的类的对象就可以直接像一个保存lambda表达式的变量一样直接调用,而调用后执行的函数就是invoke函数。直接让一个类继承自函数类型,这样invoke的函数类型就和继承的类型一致了,我们也可以像上面那样直接调用A类的对象,最终会执行invoke函数。上面使用lambda表达式,传入函数表达式替代接口,实现了返回值的回调。

2024-02-18 21:23:36 420

原创 Android Jetpack之BindingAdapter

绑定适配器,是 Jetpack DataBinding 中用来扩展布局 xml 属性行为的注解,允许你针对布局 xml 中的一个或多个属性进行绑定行为扩展,这个属性可以是自定义属性,也可以是原生属性。这个扩展行为可以是简单的ViewModel属性与控件赋值绑定,也可以是关联某个控件属性的额外操作,例如在设置属性之前进行值域检查,或类型转换,或者统一处理一些事情。

2024-02-10 09:15:00 696

原创 Android Jetpack之DataBinding

Data Binding即数据绑定,使数据对象和xml布局绑定,支持双向绑定;是一个实现数据和UI绑定的框架,是构建MVVM模式的一个工具。

2024-02-06 20:23:11 490 2

原创 @Modules cannot be scoped. Did you mean to scope a method instead?

����: @Modules cannot be scoped. Did you mean to scope a method instead?@Singleton

2024-01-25 20:40:59 183

原创 Android内存抖动分析与常见案例

在这段代码中,每次点击按钮时都会创建 100,000 个大约为 1MB 的数组,如果内存不够用,则可能导致 OOM 错误。当内存频繁分配和回收导致内存不稳定,出现内存抖动,内存抖动通常表现为频繁 GC、内存曲线呈锯齿状。由于内存是不连续的,因此在较大的数组中分配这些不连续的内存片可能导致 OOM 错误。请注意,这个代码中的消息循环可能会导致内存泄漏,因此您需要在适当的时候删除消息。对象,这会导致内存波动,因为系统并不能回收之前创建的对象。并且,内存抖动的危害严重,会导致页面卡顿,甚至 OOM。

2024-01-16 08:15:00 1045 1

原创 Android多线程总结

这就等于又创建多一个SingleInstance()对象,不符合单例模式了。因此要在线程2拿到锁后再加多一个判断,判断instance是否为空,为空的才去执行instance = new SingleInstance(),因此此时线程1已经返回了instance对象,所以线程2此时拿到锁后判断instance不为空,就不再执行,释放锁,也就不用再抢占锁资源了。这就是DCL懒汉式单例模式。不过它其实也有有可能会造成运行时异常的。

2024-01-10 22:55:48 743

原创 Android-WebView透明实现

使用WebView加载网页需要实现透明的背景,我尝试一下了相关的实现方法,分享给大家。希望能看文章的小伙伴有所帮助。就会从白色背景变成透明的背景色了。这样设置之后,我们的。

2023-04-28 20:54:30 1435 1

原创 Kotlin 与 Java 互操作

如果想要在不使用Companion的前提下,直接调用Kotlin中的 Companion 伴生对象成员,可以在 companion object中 ,使用 @JvmStatic 注解将伴生对象中的成员声明为 Java 静态成员 ,Java中可以按照静态成员的方式进行访问;如果在 Kotlin 中 , 使用 @JvmField 注解修饰成员属性 , 其作用是将 Kotlin 字段暴露给 Java , 在 Java 中可以不使用 Getter 和 Setter 方法 而直接访问 Kotlin 字段;

2023-03-14 16:54:28 598

原创 Activity的启动跳转与数据传递

Intent:直译为意图,通俗来说就是你想要做什么或想要去哪?作用:Intent是Activity、Service和BroadCastReceiver这三个应用组件进行通信的信使。例如:想要从FirstActivity启动另外一个SecondActivity,就必须使用Intent对象了。

2022-12-21 21:15:00 1222

转载 Android 12兼容性适配方案

首先,Android 12的兼容性适配分了所有应用和以Android 12 为目标平台的适配两种,其中前者为必须要做的,后者的适配也很重要,虽然应用可以暂时不设为Android 12 ,但是随着Android开发的不断更新,各种工具更新,总会在某一个时刻我们升级了AS或者使用了其他工具需要我们适配新特性,不如一次到位都适配到。这项额外的要求可提高应用的安全性。请求用户禁用休眠:如果您预计应用中的用例会受到休眠的影响,则可以向用户发送请求,以授予您的应用免于休眠和权限自动重置的豁免权。

2022-12-20 17:56:55 3284

原创 android沉浸式状态栏,启动页隐藏状态栏

定义SplashActivity 并在AndroidManifest.xml中设置上自定义的全屏主题。效果(状态栏):当全屏时,你下拉状态栏,状态栏出现后会在几秒后消失。版本开始就是可以使用这个了。// 控制状态栏操作效果。

2022-10-07 22:59:34 2274

原创 Butterknife出错java.lang.IllegalStateException: Fragment already added

后来检查生命后期调试,发现baseFragment的@OnClick先于bind执行,当bind=ButterKnife.bind(this,rootView)时,绑定的Fragment已存在。2.还有一种是@BindView导致的,使用xxxView.findViewById(R.id.xx)替换之。于是理所当然的检查xxxFragment,后来也查了网上的资料,但并没有发现问题..1.需要先ButterKnife.bind,再执行@OnClick所要加载的控件。...

2022-07-20 16:18:34 642

原创 java迭代器遍历json,批量替换内容

需求:针对复杂JSON数据的,多个特定节点的特定值进行批量加值,其他节点的不能动。1. 使用fastjson的JsonObject,修改HashMap为LinkedHashMap使用链表,保证顺序一致。 2. 迭代到我们需要的节点,对value进行的逻辑处理,处理完成后改值。3. 处理逻辑, 正则分组遍历,对特定节点下命中的字段加3。...

2022-07-13 23:58:26 2363

原创 Android权限详解,权限整理

Android中有很多权限,但并非所有的权限都是敏感权限,Android 6.0系统开始对所有权限进行了以下分类:正常权限是对用户隐私或其他应用操作风险很小的区域。如果应用声明其需要正常权限,系统会自动向应用授予该权限。在Android 8.1(API 级别 27)中,下列权限被分类为正常权限:危险权限涵盖应用需要涉及用户隐私信息的数据或资源,或者可能对用户存储的数据或其他应用的操作产生影响的区域。如果应用声明其需要危险权限,则用户必须明确向应用授予该权限。权限组任何权限都可属于一个权限组,包括正常权限

2022-06-28 11:45:05 7651

原创 Android--代理模式和Retrofit源码浅析

一、代理模式因为Retrofit用到了动态代理模式,所以先说说代理模式。1、代理模式的定义为其他对象提供一种代理以控制这个对象的访问。代理模式角色分为 3 种:Subject(抽象主题角色) :定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法;RealSubject(真实主题角色):真正实现业务逻辑的类;Proxy(代理主题角色) :用来代理和封装真实主题;代理模式的结构比较简单,其核心是代理类,为了让客户端能够一致性地对待真实对象和代理对象,在代理模式中引入

2022-05-19 22:55:07 398

转载 「JVM」类加载机制及初始化时机分析

1. 类加载机制简述Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。上面这段话是在周志明大佬的《深入理解Java虚拟机》中的,作为类加载机制的概念在此摘录。当我们在编译器中选择运行下面这个Hello World程序,从点击运行到程序停止运行会经过一系列复杂的过程,这些关于该类的过程就是类的生命周期。public class HelloWorld { public

2022-04-24 20:30:00 223

原创 kotlin单例模式与java对比

一,饿汉式1. java实现public class SingletonDemo { private static SingletonDemo instance = new SingletonDemo(); private SingletonDemo() {} public static SingletonDemo getInstance() { return instance; }}饿汉模式的写法应该是最简单的,在类加载的时候就初始化

2022-04-21 22:08:38 1855

原创 kotlin的嵌套类和内部类

Kotlin 嵌套类与Java类似,Kotlin允许您在另一个称为嵌套类的类中定义一个类class Outer { ... .. ... class Nested { ... .. ... }}由于嵌套类是其封闭类的外部(Outer)成员,因此可以使用. 符号访问嵌套类及其成员。示例:Kotlin 嵌套类的使用示例class Outer { val a = "在嵌套类外部。" class Nested {

2022-04-21 21:07:14 2629

原创 mysql乱码怎么解决,mysql中文乱码踩坑记录

最近在给管理系统添加个的操作日志功能,将日志记录到mysql里,然而存储后的汉字显示为??,于是寻求解决方法,‘彻底解决mysql中文乱码’,‘完美解决mysql中文乱码问题’wan

2021-06-17 15:21:42 222

原创 div容器文字过多导致高度不对齐处理方法

<div> <span>回访人</span> <span>回访时间</span> <span>回访小结</span></div>;<div> <span>测试1</span> <span>测试2</span> <span>测试3测试3测试3测试3测试3测试3测试3测试3测试3</sp.

2021-06-12 17:27:38 551

转载 配置nginx的负载均衡

 --------------------   写在这是方便大家找nginx的安装配置三部曲:点击即可查看1、安装和配置文件的基础配置,ctrl+f搜索nginx2、nginx文档如何查看 + 常用的配置方式(伪静态,反向代理,动静分离,防盗链,图片缓存,gzip图片压缩)3、高级配置-》负载均衡---------------------server_name _; #不启用域名 指令-热启动Nginx重新读取配置...

2021-05-23 14:32:04 168

原创 一文掌握织梦dede搜索 search调用实现

搜索框<form action="{dede:global.cfg_cmsurl/}/plus/search.php" name="formsearch" method="get"> <input type="hidden" name="kwtype" value="0" /> <input type="text" name="q" placeholder="请输入想搜索的关键字" onfocus="if(this.value=='请输入想搜索的关键字'.

2021-05-20 10:31:16 411 3

空空如也

空空如也

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

TA关注的人

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