- 博客(51)
- 资源 (1)
- 收藏
- 关注
原创 HashMap
生成链表,如果链表的长度达到8并且数组长度大于64,链表会转化成红黑树。小于64会将数据扩容位原来长度的2倍,然后将链表中的元素重新分配到数组中(JDK1.7使用模运算,JDK1.8使用位运算,位运算得到的低位放到原来的位置,高位放的位置的下标是原来的下标加上数组长度),如果数组元素数量大于数组容量乘以0.75也会扩容。1.Hashmap由数组链表和红黑树组成,数组初始长度16,插入数据的时候如果产生hash冲突,会在冲突的地方。3.数组扩容为原来的2倍可以节约空间,减少hash冲突。
2025-08-26 16:27:36
359
原创 Mac完全卸载Android Studio
Users/用户名/Library/Application Support/Google/AndroidStudio2024.2。/Users/用户名/Library/Preferences/com.google.android.studio.plist。/Users/用户名/Library/Caches/Google/AndroidStudio2024.2。/Users/用户名/Library/Logs/Google/AndroidStudio2024.2。/Users/用户名/.android。
2025-04-22 13:13:44
612
原创 Android摄像头Camera2和Camera1的一些总结
例如:界面上有两个SurfaceView, 这两个SurfaceView不能同时预览或者录制音视频,只能有一个正常工作。下图在进行预览的时候只有一个SurfaceView有画面。Android 系统对同一个摄像头的同时使用有限制,不能同时使用同一个摄像头进行预览或者录制音视频。
2024-10-16 15:24:12
835
原创 RxBus使用注意
在使用RxBus过程中,你会发现你订阅了某个事件后,在后续接收到该事件时,如果处理的过程中发生了异常,你会发现后续的事件再也接收不到了,除非你重新订阅!原因在于RxJava的事件序列机制,一个订阅事件是以或者onError()作为结束的,即:一旦订阅者的或onError()被调用,订阅者和被订阅者的订阅关系就解除了。这里说下onError()
2024-08-24 10:51:27
500
原创 Android studio 生成aar和jar
jar: 包含了class文件与清单文件.aar:包含了class文件与清单文件以及res资源文件。
2024-08-02 18:15:08
466
原创 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
2415
原创 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
19961
原创 鸿蒙知识点总结
每个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
2006
原创 netty @Sharable 注解详解
总结一下,它其实就是为了共享的方面,然后为了提升一点性能。其用法很简单,两个情况:1 如果每次通过new 而不是共享的方式,那么加不加@Sharable 效果都是一样的。每个Channel使用不通的ChannelHandler 对象。如:ch.pipeline().addLast(new EchoServerHandler());
2024-05-24 17:54:53
1590
原创 Mac JDK、SDK和Git环境变量配置
在配置好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
975
原创 四大组件,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
426
2
原创 Java利器Jakarta Commons
Commons Lang这一组API主要是提供一些基础的、通用的操作和处理,如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等。
2024-03-05 18:35:51
327
原创 Android新特性
5、App在后台运行时,如果需要获取心率、体温、血氧饱和度等传感器信息,将不仅需要向用户申请现有的BODY_SENSORS权限,还必须声明新的BODY_SENSORS_BACKGROUND权限。4、闹钟权限增加USE_EXACT_ALARM权限,一旦申请之后不可撤销,避免频繁打扰用户,能够更高效地为用户提供闹钟、日程提醒等服务。3、读取视频或图片增加了一个只允许访问部分图片或视频的权限(非强制),申请读取权限之后自动获取写入权限。5、动态加载的文件(Jar、Dex、Apk 格式)需要设置成只读的。
2024-02-20 08:49:45
674
原创 dialog,window窗口类型,api文档
WindowManager.LayoutParams - Android中文版 - API参考文档
2023-11-17 13:21:34
155
原创 安卓离线点击第一条通知跳转正常,第二条失败或者通过URL Scheme唤起App指定页面第一次成功,第二次失败
2、尝试更改intent中设定的activity的启动模式为singleTask。1、服务端intent参数中设置为launchFlags=0x04000000。
2023-10-24 17:37:04
521
原创 Android Studio 将第三方依赖生成jar包
项目中使用了许多第三方的依赖,比如Gson,glide,retrofit等。这些依赖在本地磁盘的位置如图,这里边可以导出来jar包。
2023-08-08 14:12:29
168
原创 RecyclerView缓存机制
给用户的自定义扩展缓存,需要用户自己管理 View 的创建和缓存,可通过Recyclerview.setViewCacheExtension()设置。通过了解RecyclerView的四级缓存,我们可以知道,RecyclerView最多可以缓存 N(屏幕最多可显示的item数) + 2 (屏幕外的缓存) + 5*M (M代表M个ViewType,缓存池的缓存),只有RecycledViewPool找到时才会重新调用 onBindViewHolder。
2023-07-22 15:28:09
184
原创 Android studio 多渠道版本打包和flavors
2.资源文件:自定义flavor和main中可以有相同的资源文件,指定哪个flavor优先使用哪个flavor的资源文件,如果没有才使用main中的资源文件。3.清单文件:自定义flavor和main中可以有相同的清单文件,相同的清单文件会被合并。1.java文件:自定义flavor和main中不可以有相同的java文件。
2023-03-24 16:31:39
1088
原创 Android屏幕适配(命名不同资源文件夹w<n>dp)
这个后缀的使用方式和wdp一样,随着屏幕横纵向的变化,屏幕高度也会变化,根据变化后的高度值来判断是否使用hdp ,但这种方式很少使用,因为屏幕在纵向上通常能够滚动导致长度变化,不像宽度那样基本固定,因为这个方法灵活性不是很好,google官方文档建议尽量少使用这种方式。带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和swdp不同的是,当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。
2023-03-10 13:39:05
240
原创 git忽略某个文件(.gitignore 和.git/info/exclude 的区别)
能够在团队成员中共享,因此当某个文件被公认为“无需版本控制”,那么最好就把它放在。文件则是供个人专用的,仅当自己觉得这个文件不用版本控制时,才把它放在。都能实现相同的功能,能够让Git忽略它们标记的文件。
2023-03-03 09:17:10
1299
原创 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
762
原创 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
146
原创 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
939
原创 不用第三方工具给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
1511
原创 Android危险权限
android.permission.READ_CALENDAR允许程序读取用户日历数据android.permission.WRITE_CALENDAR允许一个程序写入但不读取用户日历数据android.permission.CAMERA,允许访问摄像头进行拍照android.permission.READ_CONTACTS允许程序读取用户联系人数据android.permission.WRITE_CONTACTS允许程序写入但不读取用户联系人数据android.permission.
2022-02-11 09:54:56
2452
原创 ADB常用命令,Android无线调试
连接手机: adb tcpip 5555 切换到WIFI无线调试(adb tcpip和adb connect的端口号5555可以随意指定,但要保持一致) adb connect 172.31.2.25:5555 连接手机(adb tcpip和adb connect的端口号5555可以随意指定,但要保持一致)ADB命令: adb install -r E:\SDR.apk 安装apk adb shell rm /sdcard/Android/data...............
2022-02-11 09:44:50
7238
1
原创 Handler基础知识
Handler消息机制原理:在主线程创建handler,在构造方法中传入当前线程的looper并重写handleMessage方法。子线程通过handler的sendMessageAtTime发送消息,在sendMessageAtTime方法中获取主线程的消息队列,并将当前handler赋值给message中的target属性并通过消息队列的enqueueMessage方法将message插入到消息队列中。looper通过for死循环不断的访问消息队列中的next方法获取message,如果messag
2021-11-09 14:54:49
1066
原创 外部类,静态内部类详解
外部类 普通方法 外部类的普通属性+静态属性; 静态内部类的静态属性外部类 静态方法 外部类的静态属性 静态内部类的静态属性静态内部类 普通方法 静态内部类的普通属性+静态属性 外部类的静态属性静态内部类 静态方法 静态内部类的静态属性...
2021-10-28 10:34:01
317
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅