自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hsw

  • 博客(165)
  • 资源 (4)
  • 收藏
  • 关注

原创 Flutter 获取系统是否是暗黑模式的方式

有两种方式可以获取到。

2024-03-26 19:07:52 591 1

原创 React Native Hermes 反编译

对于很多应用来说,启用 Hermes 引擎可以优化启动时间,减少内存占用以及空间占用。Hermes官方提供了hbcdump工具,可以进行反编译,但使用起来比较麻烦,有另一个开源工具hbctool可以对hermesbytecode进行反编译与回编译。也就说在0.70 后基本上 index.android.bundle是Hermes的bytecode,没办法直接查看源码,需要借助其他工具进行反编译。提供了59, 62, 74, 76版本的反编译。安装可以反编译84版本的hbctool。并没有自动配置全局命令。

2024-01-19 17:16:05 670

原创 Flutter BottomSheet 拖动分两段展示

的 Drag 方法,动态改变Dialog的高度,通过设置一个最大高度和最小高度分成两层进行展示。因为上面我们隐藏了自带的 DragHeader ,这里自定义一个可拖动的Header。常用的展示BottomSheet的方法为。

2023-12-29 18:05:14 826

原创 Flutter IOS 前后台切换主题自动变化的问题

首先在获取 lightTheme 和 darkTheme 进行断点,发现在切换到后台的时候会重新获取,猜测它应该是在进入后台的时候对主题进行了保存,但是存储机制可能是错误的。此时如果把App前后台切换,使用Obx包括起来的内容会跟谁异常主题变换,未使用Obx的颜色不会变化。既然存储异常了,就在进入后台之前再重新设置一遍主题好了;重新测试一下,问题解决。

2023-11-08 14:46:30 854

原创 Mac M1芯片电脑,使用pod install报错

【代码】Mac M1芯片电脑,使用pod install报错。

2023-10-27 09:36:39 198

原创 NewGlobalRef 无法传入jclass的解决办法

使用NewGlobalRef 对jobject全局引用,然后通过 GetObjectClass,得到jclass。

2023-09-25 15:41:22 83

原创 多线程模式下的单例创建

Java 单例Doule Check 方式。

2023-09-21 15:36:25 93

原创 TabController 回调两次处理

通过打印发现 两次的 index 是相同的,然后发现还有一个参数就是 indexIsChanging 结合打印发现 indexIsChangeing 两次 只有一次为false。使用 TabController 的 addListener 方法监听,发现每次都会回调两次,对于同步操作还好处理,如果是异步操作就比较难处理了。

2023-09-21 09:50:56 94

原创 Flutter TabBar 自定义 indicator 的宽、高、圆角

Flutter TabBar indicator 提供了高度和形状的设置,没法直接设置其宽度;参数来重新绘制indicator来实现;

2023-09-20 15:44:43 385

转载 nodeJs xxx is not a constructor 报错原因

这里举个例子说明下,假如在A文件中引入了B文件,B文件中引入了C文件,此时是没问题的,但是如果在C文件中再引入A文件或者B文件,就会出问题。

2023-07-19 11:27:16 1172

原创 如何监听inflate方法

});} // 创建AppCompatDelegate public static AppCompatDelegate create(@NonNull Activity activity , @Nullable AppCompatCallback callback) {

2023-07-08 10:37:26 117

原创 Android 删除文件或文件夹

【代码】Android 删除文件或文件夹。

2023-06-29 15:17:22 854

原创 发布Android Lib 到 MavenCentral

上面的问题修改完成后,为了加快进度,可以用一句优美的英文评论下。点击 Staging Repositories 菜单,点击 Release 进行发布即可。创建完成后下面很快会有回应,具体你的表单有什么问题,下一步怎么操作都会列举出来。然后可以集成到自己的项目中测试一下能不能正常下载。然后在上面的搜索中搜索你的项目名称即可以看到了。如果Tasks下面没有这么多菜单,而是出现。:如果是github上面的项目,不要使用。这里注册不需要什么验证码,很简单。:自定义,写项目名称即可。插件,配置比较简单。

2023-06-15 20:04:25 761

原创 使用FFmpeg实现最简单的视频播放

/ 加载so库init {// 定义接口方法布局使用设置) {})我这里直接在data/data/{packageName}/files/ 下面放了一个MP4格式的视频。

2023-06-06 17:56:16 681

原创 FFmpeg入门基础

FFmpeg 提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等;尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg。FFmpeg 既是一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,他为开发者提供了丰富的音视频处理的调用接口。主要通过命令的方式进行对FFmpeg的调用。

2023-05-31 15:04:36 804

原创 音视频基础知识

YUV模式下,色彩分量被分开表示,人眼感知亮度和颜色不同,YUV模式将图像的亮度和颜色分开处理,不仅可以节省存储空间,而且适合人眼的视觉特性,优化了图像的压缩,常用于数字电视、DVD、视频编码等应用中。有些超高帧率的视频达到60fps。RGB即红绿蓝三个通道的颜色模型,每个像素由三个颜色通道的取值组成,代表了像素的红、绿、蓝三个基本颜色成分的浓度,RGB模式下每个像素需要占用三个字节的存储空间,而且强调颜色分量之间的独立性,对于色调、亮度、色彩鲜艳、清晰度要求高的场合使用比较多,如显示器、电视、摄像机等。

2023-05-31 14:58:12 1846

原创 Jetpack StartUp

实际开发中大部分三方的SDK都是需要application作为依赖的,所以使用StartUp的机会并不多。如果是不依赖的建议使用这种方式,毕竟我们使用的jetpack都已经用它初始化了,我们在里面多加一条,相当于搭了顺风车,省时省力。

2023-05-17 14:59:36 547

原创 ViewBindingKtx

在Android SDK中提供了里面包含的对viewModel的扩展方法,可以直接获取viewModel在MVVM架构模式中主要使用的就是viewModel和(dataBinding 要在xml布局写逻辑,个人很不喜欢)。官方并没有提供相关扩展,所以就自己造一个。原理基本上都是使用反射来实现的,我之前是写在BaseActivity中的,但是这样就有点耦合。所以使用委托的方式实现。

2023-05-06 18:41:25 187

原创 Android App 合规检测

合规检测主要是对隐私API的无声明调用的筛选。

2023-03-18 11:32:10 446

原创 Android Tapjacking

android 安全

2022-08-10 15:17:56 735

原创 RecyclerView setHasStableIds

setStableIds 标记了是否是稳定的数据源,数据源不可改变。此时不可再添加 adapter.registerAdapterDataObserver。如果设置为true如果adapter.hasStableIds返回true,ViewHolder放入mAttachedScrap中,否则会将ViewHolder回收到非scrap缓存中...

2022-03-25 14:20:23 1787

原创 Kotlin For 循环

fun main() { // 循环包含开头和结尾的数据 for (i in 0..10) { print("$i ") } // 0 1 2 3 4 5 6 7 8 9 10 println() // 倒序循环包含开头和结尾的数据 for (i in 10 downTo 0) { print("$i ") } // 10 9 8 7 6 5 4 3 2 1 0 println()

2022-03-22 15:02:57 4231

原创 webview_flutter 加载本地html和js文件

flutter version: 2.10.1dart version: 2.16.1webview_flutter version: ^3.0.0网上看到别人使用的js都是直接写在index.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type=".

2022-02-15 13:53:25 3906

原创 Jadx 打开闪退

好久没用jadx,今天打开一直闪退。去下载最新版本也不行。然后想起来最近把java 版本升级到了11。把环境变量改成8就好了。

2022-02-09 13:20:20 1606

原创 协程timeout和suspendCoroutine

kotlin.runCatching { withContext(Dispatchers.IO) { withTimeout(2100) { suspendCancellableCoroutine<String> { Thread.sleep(3000) logger("time continue") it.resumeWith(Result.succe

2022-01-17 15:47:07 1811

原创 【已解决】Android room kotlin-gradle-plugin 版本造成的报错

新建了一个项目使用了Room进行数据存储,按照之前的步骤-Entity、Dao、Database配置完成后,build之后一下出现了一堆错误,基本上每个Dao方法都报错了。Not sure how to convert a Cursor to this method's return typeQuery method parameters should either be a type that can be converted into a database columnUnused.

2021-12-20 14:35:14 5037

原创 Android 为ImageView 添加点击效果

android:background="?attr/selectableItemBackgroundBorderless"

2021-11-26 11:02:40 1733

原创 project id required in the url

调用infura接口时一直出现project id required in the url解决https://ropsten.infura.io/v3/b6c9a7axxxxxxxxxxxxx/后面的 / 去掉

2021-11-23 18:32:24 2721

原创 BNB Chain testnet faucet

https://docs.binance.org/smart-chain/wallet/math.html#transfer-bnb-from-bsc-to-bc如果在 https://developer.mathwallet.org/bsc02/ 的balance一直为0,那就打开MathWallet 的设置 -> 冲突 -> 开启打开与MetaMask/TronLink的冲突

2021-11-22 15:45:28 872

原创 ROOM 为字段添加唯一索引

@Entity(indices = {@Index(value = {"first_name", "last_name"}, unique = true)}) public class User { @PrimaryKey public int id; @ColumnInfo(name = "first_name") public String firstName; @ColumnIn...

2021-11-22 13:28:26 2116

原创 EventBus、Rxbus、LiveBusEvent

EventBusEventBus2.x使用的是运行时注解,它采用了反射的方式对整个注册的类的所有方法进行扫描来完成注册,因而会对性能有一定影响。EventBus3.x使用的是编译时注解,Java文件会编译成.class文件,再对class文件进行打包等一系列处理。在编译成.class文件时,EventBus会使用EventBusAnnotationProcessor注解处理器读取@Subscribe()注解并解析、处理其中的信息,然后生成Java类来保存所有订阅者的订阅信息。这样就创建出了对文件或类的

2021-11-11 14:32:35 838

原创 ExceptionInInitializerError、java.security.NoSuchAlgorithmException: no such algorithm: ECDSA for pro

在集成Tron-java Sdk后运行发现总是异常java.lang.ExceptionInInitializerError......java.security.NoSuchAlgorithmException: no such algorithm: ECDSA for provider BC解决办法:1.在application的onCreate里面加入下面的方法public void setupBouncyCastle() { final Provider provi

2021-11-04 17:32:46 2938 1

原创 WorkManager的基本使用

由于之前的项目都没有相关后台运行的东西,所以对四大组件之一Service很少使用,最近准备深入学习一下。但使用的时候发现都标识为过时了,主要是因为Android高版本的限制和性能问题。推荐的是使用WorkManager来代替。这个还真没使用过。创建一个workerclass DelayWork(context: Context, workerParameters: WorkerParameters) : Worker(context, workerParameters) { overrid.

2021-11-01 20:16:33 1545

原创 Android Service 生命周期

普通的Serviceclass NormalService: Service() { override fun onCreate() { logger("onCreate") super.onCreate() } override fun onBind(intent: Intent?): IBinder? { logger("onBind") return null } override fun

2021-11-01 19:15:57 3245

原创 Object中的hashCode和equals方法

Java 中我们创建的每一个对象都是可以重写hashCode equals方法equalsequals方法 用到最多的地方就是在比较字符串的时候。不用==是因为它是通过比较内存地址来比较是否相同的。在Object中public boolean equals(Object obj) { return (this == obj);}这里其实equals和==是等价的。字符串能用equals进行比较是因为String重写了equals方法。public boolean equ.

2021-10-20 14:02:32 98

原创 Kotlin by 委托

类委托使用场景:当无法或不想直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。interface Base { fun print()}class BaseImpl(val x: Int): Base { override fun print() { println("BaseImpl:$x") }}class BaseImpl2(val x: Int): Bas

2021-10-16 09:34:52 111

原创 静态代理和动态代理

静态代理abstract class BaseClass { abstract fun write()}class StaticClass: BaseClass() { override fun write() { println("StaticClass") }}class RealClass: BaseClass() { var baseClass: BaseClass? = null override fun write() {

2021-10-16 09:33:31 74

原创 责任链模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决:职责链上的处理者负责处理

2021-10-15 19:58:55 65

原创 Retrofit 基本流程分析

retrofit 是基于okhttp,使用动态代理来实现的。动态代理动态代理在retrofit中其实就是在运行期间去创建interface实例的。我们在使用时都会创建一个interface类,里面再添加一些接口方法。public <T> T create(final Class<T> service) { return (T) Proxy.newProxyInstance( service.getClassLoader()

2021-10-11 20:06:46 240

原创 Android 引入so库失败的问题

异常:dlopen failed: library "***.so" not found首先加入对应abi的so文件检查abiFilters中是否和加入so的文件夹对应在android {…} 中加入ndk { abiFilters 'armeabi-v7a','arm64-v8a'}一般这个就能满足大部分的手机了。在在android {…} 中加入sourceSets { main { jni.srcDirs = []

2021-09-29 15:56:00 446

tronjjar.zip

Tron java开发工具包,使用TronClient

2021-11-04

MiPush_Server_Java_20190420.zip

小米推送服务端java代码,里面修改了部分的代码,更快速便捷的使用,使用是尽量使用springboot框架更方便接入

2020-02-28

jsoup(java解析html工具)

java解析html工具

2017-03-15

h5 九宫格拼图游戏

h5 九宫格拼图游戏

2016-08-16

空空如也

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

TA关注的人

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