自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (1)
  • 收藏
  • 关注

原创 RxBus使用注意

在使用RxBus过程中,你会发现你订阅了某个事件后,在后续接收到该事件时,如果处理的过程中发生了异常,你会发现后续的事件再也接收不到了,除非你重新订阅!原因在于RxJava的事件序列机制,一个订阅事件是以或者onError()作为结束的,即:一旦订阅者的或onError()被调用,订阅者和被订阅者的订阅关系就解除了。这里说下onError()

2024-08-24 10:51:27 387

原创 Android studio 生成aar和jar

jar: 包含了class文件与清单文件.aar:包含了class文件与清单文件以及res资源文件。

2024-08-02 18:15:08 328

原创 Android ndk中abiFilters详解

只适配armeabi的APP可以跑在armeabi,x86,x86_64,armeabi-v7a,arm64-v8上只适配armeabi-v7a可以运行在armeabi-v7a和arm64-v8a只适配arm64-v8a 可以运行在arm64-v8a上。google play支持上传多个apk。目前来说,大多数的大厂APP用的都是armeabi或armeabi-v7a,只有像微信这种牛逼的APP,为了追求性能和用户体验,放弃了少部分设备,这也说得通吧,毕竟微信也不在乎苍蝇那点肉。A: 不会,但是反过来会。

2024-07-12 16:42:46 572

原创 rtsp实时视频流测试地址

RTSP 测试地址 - Time Tick来源 RTSP 地址 延迟 Nordland rtsp://77.110.228.219/axis-media/media.amp 200ms Norwich rtsp://37.157.51.30/axis-media/media.amp 250ms Orlando rtsp://97.68.104.34/axis-media/media.am 350ms PriceCenterPlaza

2024-07-05 17:43:13 2858

原创 Android Studio 自定义打包出来的apk名字

build.gradle中增加以下配置。例如:输出的APK名字是。

2024-07-03 15:48:04 184

原创 Android studio 代码增加usage和作者提示

勾选 和 即可。

2024-05-30 16:29:03 166

原创 鸿蒙知识点总结

每个HarmonyOS应用可以包含多个.hap文件,一个应用中的.hap文件合在一起称为一个Bundle,而bundleName就是应用的唯一标识,在应用上架到应用市场时,需要把应用包含的所有.hap文件(即Bundle)打包为一个.app后缀的文件用于上架,这个.app文件称为App Pack(Application Package),其中同时包含了描述App Pack属性的pack.info文件;HAP是HarmonyOS应用安装的基本单位,包含了编译后的代码、资源、三方库及配置文件。

2024-05-27 19:00:37 1129

原创 netty @Sharable 注解详解

总结一下,它其实就是为了共享的方面,然后为了提升一点性能。其用法很简单,两个情况:1 如果每次通过new 而不是共享的方式,那么加不加@Sharable 效果都是一样的。每个Channel使用不通的ChannelHandler 对象。如:ch.pipeline().addLast(new EchoServerHandler());

2024-05-24 17:54:53 960

原创 Mac JDK和SDK环境变量配置

在配置好JDK、SDK环境变量后,如果也遇到了每次需要执行:source ~/.bash_profile才能使JDK、SDK配置生效的问题,可以继续往下看,如果没有遇到这样的问题,可以忽略以下步骤。2.ANDROID_HOME的默认安装路径是:/Users/用户/Library/Android/sdk,如果安装的路径有修改,在配置的时候更换一下即可。2.在终端输入命令:open ~/.zshrc,打开.zshrc,在文件的最后位置添加:source ~/.bash_profile,如图。

2024-05-22 16:42:39 604

原创 Synchronized加在静态方法和普通方法的区别

2、Synchronized加在普通方法表示对普通方法所在的类的对象进行加锁。1、Synchronized加在静态方法表示对类进行加锁。

2024-05-11 15:00:15 96

原创 java内存模型

栈:存放对象的实例的引用,基本数据类型。方法区:存放类信息,常量,静态变量。程序计数器:记录程序执行的位置。堆:存放对象的实例,数组。

2024-05-09 13:37:48 427

原创 SharePreferences进程 线程

1.SharePreferences是线程安全的 里面的方法有大量的synchronized来保障。2.SharePreferences不是进程安全的 即使你用了MODE_MULTI_PROCESS。

2024-05-06 18:08:48 93

原创 Lifecycle原理,源码分析

Lifecycle原理,源码分析。

2024-05-06 17:02:57 282

原创 String、StringBuffer和StringBuilder

在实际开发中,应该根据具体的场景选择适合的字符串处理类。如果需要对字符串进行大量修改,并且在多线程环境下使用,应该使用StringBuffer类。如果在单线程环境下需要对字符串进行大量修改,应该使用StringBuilder类。1. String类是不可变的,每次对String对象进行修改都会创建一个新的String对象,因此在需要对字符串进行大量修改的场景下,使用String类会产生很多的开销。2. StringBuffer和StringBuilder类是可变的,可以对其进行修改,而不会创建新的对象。

2024-05-06 16:40:02 129

原创 四大组件,dialog,context,ANR

所以只要判断getActivity()为空,就可以不再执行下面的代码,这完全不影响业务的使用。3、广播不能弹出dialog,dialog的显示是需要依附于一个activity,如果需要在广播中显示dialog,需要把dialog设置成一个系统的dialog,即全局性的提示框,alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT 否则不会显示。getContext():获取到当前对象的上下文。

2024-04-25 11:54:06 299 2

原创 Java利器Jakarta Commons

Commons Lang这一组API主要是提供一些基础的、通用的操作和处理,如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等。

2024-03-05 18:35:51 272

原创 Android 操作剪切板

【代码】Android 操作剪切板。

2024-02-26 11:11:44 276

原创 Android新特性

5、App在后台运行时,如果需要获取心率、体温、血氧饱和度等传感器信息,将不仅需要向用户申请现有的BODY_SENSORS权限,还必须声明新的BODY_SENSORS_BACKGROUND权限。4、闹钟权限增加USE_EXACT_ALARM权限,一旦申请之后不可撤销,避免频繁打扰用户,能够更高效地为用户提供闹钟、日程提醒等服务。3、读取视频或图片增加了一个只允许访问部分图片或视频的权限(非强制),申请读取权限之后自动获取写入权限。5、动态加载的文件(Jar、Dex、Apk 格式)需要设置成只读的。

2024-02-20 08:49:45 335

原创 Android切换语言

【代码】Android切换语言。

2024-01-11 13:57:25 156

原创 WeakReference在Handler中的应用

这种情况就是由于android的特殊机制造成的:当一个android主线程被创建的时候,同时会有一个Looper对象被创建,而这个Looper对象会实现一个MessageQueue(消息队列),当我们创建一个handler对象时,而handler的作用就是放入和取出消息从这个消息队列中,每当我们通过handler将一个msg放入消息队列时,这个msg就会持有一个handler对象的引用。有一个Activity的弱引用,而弱引用会很容易被gc回收,这样就能解决Activity结束后,gc却无法回收的情况。

2023-12-05 22:22:50 116

原创 dialog,window窗口类型,api文档

WindowManager.LayoutParams - Android中文版 - API参考文档

2023-11-17 13:21:34 102

原创 安卓离线点击第一条通知跳转正常,第二条失败或者通过URL Scheme唤起App指定页面第一次成功,第二次失败

2、尝试更改intent中设定的activity的启动模式为singleTask。1、服务端intent参数中设置为launchFlags=0x04000000。

2023-10-24 17:37:04 320

原创 Android 适配折叠屏

【代码】Android 适配折叠屏。

2023-10-08 11:08:40 268

原创 Android Studio 将第三方依赖生成jar包

项目中使用了许多第三方的依赖,比如Gson,glide,retrofit等。这些依赖在本地磁盘的位置如图,这里边可以导出来jar包。

2023-08-08 14:12:29 28

原创 Activity跳转生命周期

2023-07-23 16:03:41 29

原创 RecyclerView缓存机制

给用户的自定义扩展缓存,需要用户自己管理 View 的创建和缓存,可通过Recyclerview.setViewCacheExtension()设置。通过了解RecyclerView的四级缓存,我们可以知道,RecyclerView最多可以缓存 N(屏幕最多可显示的item数) + 2 (屏幕外的缓存) + 5*M (M代表M个ViewType,缓存池的缓存),只有RecycledViewPool找到时才会重新调用 onBindViewHolder。

2023-07-22 15:28:09 27

原创 Android线程池的分类

3.线程数量不固定的线程池,核心线程数量固定,非核心线程数量不固定,非核心线程有超时机制,用于执行定时任务和固定周期任务。2.线程数量不固定的线程池,只有非核心线程,有超时机制60秒,任务队列是空集合,适合执行大量的耗时少的任务。1.线程数量固定的线程池,只有核心线程,没有超时机制,任务队列没有大小限制。4.只有一个核心线程,适用于不需要处理线程同步问题的情况。

2023-06-28 22:29:04 112

原创 Android studio 多渠道版本打包和flavors

2.资源文件:自定义flavor和main中可以有相同的资源文件,指定哪个flavor优先使用哪个flavor的资源文件,如果没有才使用main中的资源文件。3.清单文件:自定义flavor和main中可以有相同的清单文件,相同的清单文件会被合并。1.java文件:自定义flavor和main中不可以有相同的java文件。

2023-03-24 16:31:39 246

原创 Android屏幕适配(命名不同资源文件夹w<n>dp)

这个后缀的使用方式和wdp一样,随着屏幕横纵向的变化,屏幕高度也会变化,根据变化后的高度值来判断是否使用hdp ,但这种方式很少使用,因为屏幕在纵向上通常能够滚动导致长度变化,不像宽度那样基本固定,因为这个方法灵活性不是很好,google官方文档建议尽量少使用这种方式。带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和swdp不同的是,当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。

2023-03-10 13:39:05 69

原创 Android操作assets中的资源

【代码】Android操作assets中的资源。

2023-03-06 18:03:02 366

原创 git忽略某个文件(.gitignore 和.git/info/exclude 的区别)

能够在团队成员中共享,因此当某个文件被公认为“无需版本控制”,那么最好就把它放在。文件则是供个人专用的,仅当自己觉得这个文件不用版本控制时,才把它放在。都能实现相同的功能,能够让Git忽略它们标记的文件。

2023-03-03 09:17:10 433

原创 ANR问题

data/system/dropbox:会保留历史上发生的所有ANR时的信息,保存时长3天。

2022-12-14 16:38:54 23

原创 js运算符 ??、 ||、?.

除了false、0、""、null、undefined 和 NaN 以外皆为真值。

2022-11-02 14:59:07 381

原创 查看真机下的报错信息,日志

仅仅查看log的信息还不足以帮我们定位到ANR的原因,所以需要去看data/anr/trace文件或者data/system/dropbox/下的log日志。

2022-10-13 13:58:31 140

原创 es6运算符

创建字符串模板,可以直接写回车空格编写html或文本,在 ` ` 中可以使用 ${ }直接把变量与字符串拼接起来。

2022-08-22 16:51:06 102

原创 Android混淆笔记

不混淆某个类 -keep public class name.huihui.example.Test { *; }不混淆某个包所有的类 -keep class name.huihui.test.** { *; }不混淆某个类的子类 -keep public class * extends name.huihui.example.Test { *; }不混淆所有类名中包含了“model”的类及其成员 -keep public class .model. {*;}不混淆某个接口的实现 -keep class *

2022-06-28 10:44:13 621

原创 Lifecycle,LiveData,ViewModel区别

Lifecycle ,LiveData,ViewModel

2022-06-21 17:00:59 209

原创 git命令

git fetch : 从远程获取最新版本到本地,不会git mergegit pull : git fetch+git mergeupdate project : git fetch +git merge或者git rebase(android studio 界面自己选择)

2022-05-20 15:46:04 96

原创 Windows JDK和SDK环境变量配置

(1)新建系统变量->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径)(2)编辑系统变量->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”(3)新建系统变量->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”.........

2022-05-10 16:11:07 695

原创 不用第三方工具给apk签名

1.给apk签名:java -jar apksigner.jar sign --ks 签名文件 --ks-key-alias 签名文件的alias --ks-pass pass:密码 --key-pass pass:密码 --out 签名后的APK 签名前的APK"例如:D:\sdk\build-tools\28.0.3\lib>java -jar apksigner.jar sign --ks D:/qdkey.jks --ks-key-alias qdkey --ks-pass pass

2022-05-08 16:46:03 1170

typora历史版本(不收费版,1.0之前的版本)

typora历史版本(不收费版,1.0之前的版本)

2022-05-10

空空如也

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

TA关注的人

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