自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Flutter插件 权限管理 Permission_handler使用

在我们Android和IOS开发中,都会涉及到权限问题,而Flutter是需要分别适配Android和IOS,推荐使用Permission_handler。

2024-12-03 19:18:48 779

原创 RN系列:Android原生与Flutter的交互与通信

Android原生项目启动flutter使用的是FlutterEngine,要想后面可以和flutter module交互,以下两个方法中使用的flutterEngine必须和启动flutter module使用的一样。

2024-11-13 21:18:23 377

原创 React-Redux 中useSelector、useDispatch的基础使用

通过useSelector、useDispatch等方法,我们可以用Hooks方法完成Redux的功能,Hooks和Redux之间没有替代关系,应该更好地共存和融合。

2024-11-08 16:20:41 983

原创 Flutter 状态管理框架Get

Flutter状态管理框架Get的使用。不得不说,Get使你的代码量减少了许多, 一个obs. 一个obx. 搞定你的数据监听刷新, 给你不一样的简洁。

2024-10-24 22:08:01 1236 1

原创 Spring Boot实现文件上传和下载

Web项目中,文件的上传和下载服务也是基于HTTP请求的,文件上传由于需要向服务接口提交数据,可以使用POST的请求方式,而文件的下载只是获取数据,因此可以使用GET请求方式。使用postman请求下载接口时,接口返回文件,postman会直接解析文件内容,如果无法正确解析则会显示乱码信息。创建好指定的文件存放路径文件夹后,上传逻辑只需要将接收到的文件数据赋值到指定路径后即可。文件的下载逻辑是,根据指定的文件名称到文件资源文件夹中获取,如果存在则返回文件。,接收文件参数的对应字节流。

2024-10-04 21:57:43 649

原创 Android attachBaseContext作用

需要注意的是,在 attachBaseContext() 方法中,必须调用父类的 attachBaseContext() 方法,以确保系统在应用程序启动时正确地初始化 Context 对象。通常,开发人员会在这个方法中执行一些初始化操作,如创建全局对象、设置默认语言等。总之,attachBaseContext() 方法是 Android 应用程序中非常重要的一个回调方法,通过重写该方法,开发人员可以在应用程序启动时进行一些必要的初始化操作,以确保应用程序的正确运行。

2024-09-29 14:59:45 374

原创 Flutter Error: Type ‘UnmodifiableUint8ListView‘ not found

命令将正在使用的所有依赖项升级到最新版本,最终解决问题。需要将 win32 软件包版本升级到最新版本,或者运行。运行Flutter Doctor正常。执行命令,以更新软件包。

2024-09-16 20:13:32 4267

原创 react native 中设置Image/ImageBackground圆角无效的解决方法

react native 中设置Image/ImageBackground圆角无效的解决方法

2024-08-30 19:52:33 262

原创 Activity收不到bundle值

当Activity的启动模式为singletop的时候,若Activity位于栈顶,Activity也不会重建,那么通过Intent传值,getIntent也是接收不到值的。当Activity的启动模式为singleTask或singleInstance的时候,通过Intent传值,getIntent是接收不到值的,为null。当页面再次被调用的时候,可以在onNewIntent方法中setIntent(intent),再走onRestart。Activity有四种启动模式,一般为默认。

2024-08-04 22:03:18 281

转载 Android与JS交互方案及常见问题

如果检测到是预先约定好的协议,就调用相应方法,即JS需要调用Android中的方法。Android和JS通过webview.addJavascriptInterface(new JSKit(),"mjs")方法形成对象映射,JS中的mjs对象就可以调用Android中的JSKit对象中的方法了。当该JS通过Android的mWebView.loadUrl("file:///android_asset/javascript.html")加载后,就会回调shouldOverrideUrlLoading()。

2024-07-24 11:23:56 1927 1

原创 Java getSuperclass和getGenericSuperclass

返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。如果此 Class 表示 Object 类、一个接口、一个基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示该 Object 类的 Class 对象。返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果超类是参数化类型,则返回的 Type 对象必须准确反映源代码中所使用的实际类型参数。

2024-07-10 21:32:30 1402 1

原创 Dart中with的用法

在Dart语言中,with关键字用于混入(Mixin)类的功能。Mixins 是一种实现多重继承功能的机制,虽然Dart本身只支持单继承,但是通过with关键字,一个类可以包含多个类的行为而不需要多层继承。

2024-06-06 20:25:36 264

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

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

2024-05-16 23:03:57 493

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

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

2024-04-26 16:01:21 1565

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

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

2024-04-16 22:44:52 3524 1

原创 Android13 行为变更及新特性

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

2024-04-06 14:01:39 671

转载 OkHttp3+Retrofit添加缓存

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

2024-03-19 22:12:06 170

原创 Retrofit示例 ,Retrofit 注解学习

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

2024-03-07 20:45:00 1144

原创 kotlin协程 Flow数据流

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

2024-02-29 21:53:53 457

原创 kotlin reified函数封装activity跳转

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

2024-02-19 20:45:00 305

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

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

2024-02-18 21:23:36 1078

原创 Android Jetpack之BindingAdapter

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

2024-02-10 09:15:00 868

原创 Android Jetpack之DataBinding

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

2024-02-06 20:23:11 582 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 233

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

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

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

原创 Android多线程总结

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

2024-01-10 22:55:48 839

原创 Android-WebView透明实现

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

2023-04-28 20:54:30 1817 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 719

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

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

2022-12-21 21:15:00 1379

转载 Android 12兼容性适配方案

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

2022-12-20 17:56:55 3852

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

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

2022-10-07 22:59:34 2621

原创 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 708

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

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

2022-07-13 23:58:26 2623

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

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

2022-06-28 11:45:05 8773

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

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

2022-05-19 22:55:07 473

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

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

2022-04-24 20:30:00 267

原创 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 1943

原创 kotlin的嵌套类和内部类

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

2022-04-21 21:07:14 2945

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

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

2021-06-17 15:21:42 294

原创 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 645

空空如也

空空如也

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

TA关注的人

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