- 博客(69)
- 收藏
- 关注
原创 三方库总结
添加消息报头,用@Header,比如接受的编码格式,user-agent等。当时就考虑把三个表合成一个表,首先是在冷启动登陆成功时,会查询未回复表、密友表中的消息,然后转换为消息表消息的数据格式,然后插入消息表中,再删掉密友表和未回复表中的数据,然后在对应消息页、密友页、未回复页面,通过给定亲密度查询条件,查询对应的数据并展示;可对可以讲的项目,照片墙播放videoview 全屏,轮播, 遇到的问题,怎么解决的,videoview第一次点击不暂停,第二次点击暂停,马甲包的配置开发流程,一些基础面试知识。
2025-03-04 21:47:20
797
原创 Android studio配置代码模版
1代表关键词的名字,2是关键词生成代码的功能描述,3可以控制在哪些地方可以使用关键词生成代码,如xml、java、kotlin等,4表示关键词输入后点击回车键生成代码,中间Template text里的内容就是该关键词要生成的代码,你可以自由设置,完成之后点击ok,在关键词生效的地方输入该关键词,然后按回车,就会立刻生成你设置的模版代码。
2024-08-02 17:10:10
498
原创 Android scroller学习总结
当然也可以以view内容作为滑动的参考对象,画布不动,内容往左、上滑为正(因为scrollTo和scrollBy的参数正负和以view内容做参考对象一致,所以以view内容为参考对象比较容易记忆)(3)在computeScroll()方法中,先调用Scroller类中的computeScrollOffset()方法,里面根据当前消耗时间进行轨迹坐标的计算,然后取得计算出的当前滑动的偏移坐标,调用View的scrollTo()方法进行滑动控制,最后也需要调用invalidate();
2023-06-02 12:47:28
991
原创 java.lang.IndexOutOfBoundsExceptionInconsistency detected. Invalid view holder adapter position问题处理
Inconsistency detected. Invalid view holder adapter positionb{9cd1115 position=0 id=-1
2022-08-18 13:54:52
1477
原创 关于在Android 11系统手机上请求READ_PHONE_STATE权限的问题
Android 11系统申请READ_PHONE_STATE权限
2022-06-03 20:56:04
17510
5
原创 java锁
#### 锁的分类:公平锁、非公平锁,独占锁、共享锁,可重入锁,悲观锁、乐观锁#### 公平锁:ReentrantLock(boolean fair),设置fair为true,即可得到一个公平锁,会按照线程请求锁的先后顺序获的锁,采用先进先出的队列实现#### 非公平锁:ReentrantLock(boolean fair),设置fair为false,或调用默认构造函数ReentrantLock(),即可得到一个非公平锁,非公平锁在吞入量上会优于公平锁,一个锁释放在另一个请求时,有可能另
2022-03-26 09:54:44
432
原创 关于aar的一些总结
1.aar不仅可以打包代码,还可以打包资源文件(jar只能打包代码)2.aar本身是一个zip文件,可以手动改后缀名为zip然后解压打开,里面有classes.jar包、res文件、AndroidManifest文件(其中jar包里面是class文件,所以引入aar可以提升编译速度)附录一些命令行命令:打包多个Java文件到一个指定文件夹中:javac -d 指定文件夹 java文件1 java文件2jar包清单文件内容:Mainfest-Version:版本号 Main-Class:程序入
2022-02-12 11:36:49
2900
原创 Android线程池源码阅读记录
今天面试被问到线程池如何复用线程的?当场就懵掉了...于是面试完毕就赶紧打开源码看了看,在此记录下:我们都知道线程池的用法,一般就是先new一个ThreadPoolExecutor对象,再调用execute(Runnable runnable)传入我们的Runnable,剩下的交给线程池处理就行了,于是这次我就从ThreadPoolExecutor的execute方法看起:public void execute(Runnable command) { if (command ==
2021-12-22 22:48:30
1617
原创 tcp和udp
tcp为啥是可靠的?tcp可靠就可靠在接收方会按照顺序发送数据包给接收方(如序列号为seq=1),而接收方会在每次接收到发送方发来的数据包后对接收方发送一个确认包进行确认(如ack=2),以表明自己收到了正确有序的包,这样发送方就可以接着发送下一个数据包了(seq=2),通过这种机制,发送方就可以保证自己发送的有序数据可以被接收方按照顺序接收到,且数据包的内容是完整的(通过校验和比较),从而确保了通信的可靠tcp为啥要三次挥手?三次挥手是为了确保发送方和接收方都确认了发送的起始序列号,这样就可以
2021-12-22 21:15:27
929
原创 网络各层协议及作用
TCP/IP协议:物理层、数据链路层、网络层、传输层、应用层物理层:指传递电信号的物理介质,如电缆、光缆等,可对0、1电信号进行传输数据链路层:定义电信号的分组规则,如称一组电信号为一帧,一帧有head和data两部分,head占18字节,包含发送方和接收方的MAC地址,即接入internet的设备地址,data记录传输的数据,一帧有最大长度限制,超过最长长度后需要分片传输,即新开一帧。根据这种分组规则产生的数据包,我们称为以太网数据包,如果发送方和接收方在同一个子网络中,那发送方就可以通过广播发送
2021-12-19 00:16:18
2899
原创 Android序列化
1.定义序列化:将对象的状态信息转换成可存储、传输的字节流,这些字节流可以保存到磁盘上,也可以通过网络进行传输,在以后某个时刻恢复原来的对象2.序列化的方式 Serializable java提供的一个序列化接口,使用方便,序列化后的字节流可以持久存储,但底层通过反射来实现,中间会产生大量对象,效率低 Parcelable Android自己实现的序列化接口,通过将类状态信息分解为基本类型信息在内存中进行存取,效率高,底层通过c++实现,由于android系统各个版本可能实现Pa
2021-11-27 14:35:50
2602
原创 解决Could not determine artifacts for XXXX: Skipped due to earlier error
去Users/xxx/.gradle/gradle.properties中删除掉代理转载于:解决Could not determine artifacts for XXXX: Skipped due to earlier error - 简书
2021-11-23 12:32:29
7643
1
原创 序列化问题
1、为什么要进行序列化因为序列化可以将对象的属性保存在文件、数据库、网络流中进行传输,在某一时刻利用这些保存的信息来进行对象的恢复2、序列化有哪几种方式,有什么不同,优劣序列化可以通过Serializable接口和Parcelable接口来实现,其中Serializable是java提供的接口,底层通过反射实现对序列化对象属性的保存,而Parcelable是Android提供的接口,原理是将序列化对象转换成基本数据类型进行保存,适合在内存中使用,如activity间的信息传输,效率比Serial
2021-11-21 17:14:28
2316
原创 关于集合的一些总结
1、java中集合有三大类型:分别是Set、Queue、List,都是继承于Collection接口,其中set中元素是无序的,不允许null,List是有序的,允许null。关于Queue有一个ArrayDeque子类,其中封装了栈和队列的相关操作,当使用栈时,可以用push方法和pop方法;当使用队列时,可使用offer方法和pop方法,这些集合中的操作都是线程不安全的,如果想要线程安全,可以使用Collection.SynchronizeXxx进行包装,另外Collection还提供了很多的API,可
2021-11-20 20:17:13
529
原创 关于数据类型、位运算、数据结构的一些总结和思考
1、首先要说的是java的8大数据类型:整数类型 byte(1个字节) short(2个字节) int(4个字节) long(8个字节) 字符类型 char(2个字节) 浮点类型 float(4个字节) double(8个字节) 布尔类型 boolean(单个出现4个字节,当作int类型;在boolean数组中被当作byte,占1个字节) String类型具体所占字节,要根据其内容决定,一般英文字母或符号算一个字节,汉字算3个字节(utf-8编码)
2021-11-20 14:34:24
1156
原创 关于图片本身大小、格式、内存、压缩相关知识
首先感谢这篇博客,给了我很大启发:Android中一张图片占据的内存大小如何计算下面总结我的一些思考和收获:1、图片都有尺寸,这里尺寸用的是图片属性的分辨率表示:1600*1600,代表宽和高均有1600个像素点,而一个像素点ARGB四个通道,每个通道共有256个值,在计算机存储中占8位,即1个字节,那么这张图片实际大小就是1600*1600*4/1024/1024=9.76MB,但你点开图片发现它的大小却只有几十K,这是怎么回事呢?其实是对原图片进行了压缩,不同格式的图片代表对原图片压缩的策略不同
2021-11-19 22:54:42
3179
原创 简单说说设计模式之代理模式
样例代码public class DaiLi { public DaiLi() { /** * 步骤4:使用代理 * 需要使用哪个就代理哪个 * 使用代理可以满足软件开发的开闭原则,即对功能扩展开放,对修改关闭 */ //DaiLiClass.getInstance().init(new Facade1()); //DaiLiClass.getInstance().init(ne
2020-06-13 13:19:08
246
原创 设计模式之单例模式
样例代码public class DanLi implements Serializable { private DanLi(){} //饿汉模式:不能懒加载,会造成内存开销,线程安全 private static DanLi instance1=new DanLi(); public static DanLi getInstance1(){ return instance1; } private static DanLi instanc
2020-06-13 12:00:12
201
原创 JVM探索
前言JVM就是java虚拟机的意思,为什么要了解它?因为了解它能够对java代码的运行过程有一个清晰的认识,能够帮助你在遇到问题时知道产生问题的根本原因,以及怎样去解决问题。JVM的组成JVM组成大致如图上所示,程序运行的过程大致是JVM先通过classloader将编译过的.class文件加载进内存里,放入不同的地方,如线程共享区的堆主要存放各种类对象,方法区则存放常量、类变量和静态变量...
2020-04-18 21:43:57
260
原创 执行gradlew命令提示找不到
我的是在MacBook设备的Android studio的终端里执行gradlew命令,提示我找不到该命令。看了一下网友提供的解决方案,使用./gradlew替换gradlew命令结果还是不行,提示no such file or directory,后来有查询了一些资料,最终解决了这个问题,解决步骤如下:命令行里运行命令:gradle wrapper再运行‘./gradlew’命令即可...
2020-02-26 13:27:19
9590
5
原创 kotlin实现五子棋单机小游戏
最近学了点kotlin的相关知识,顺手写了一个简单的五子棋单机游戏,分享给大家吧!有兴趣的可以看看五子棋界面package wjc.kotlintestimport android.content.Contextimport android.graphics.Canvasimport android.graphics.Colorimport android.graphics.Pain...
2019-12-11 19:50:18
1237
4
原创 关于构建服务器和后端接口的过程
1.Windows系统下查看是否安装了mysql输入services.msc打开服务窗口,查看是否有mysql服务2.mysql下载安装、配置和使用3.忘记初始密码时:在mysql安装的目录下删除data文件夹以管理员身份运行命令行输入:mysqld --initialize --console回车输入:net start mysql回车输入:mysql -u root -p回车...
2019-11-12 23:57:57
1188
原创 解决EditText弹出键盘出现的黑屏闪现问题
//解决点击EditText弹出收起键盘时出现的黑屏闪现现象(EditText)editText.getRootView().setBackgroundColor(Color.WHITE);
2019-11-08 10:13:30
1244
原创 Android动画-1
Android动画目录Android视图动画Android属性动画Android布局动画Interpolators(插值器)1.Android视图动画介绍视图动画使用简单,效果丰富,它提供了AlphaAnimation、RotateAnimation、TranslateAnimation、ScaleAnimation四种动画方式,并提供了AnimationSet动画集合,混...
2019-10-24 18:58:53
351
原创 mac关于环境变量的相关知识
export语法{}为占位符:${PATH}和$PATH等效“:“相当于window环境变量中的”;”,是分隔符的意思。PATH=XXX:$PATH相当于PATH+=XXX:$PATH或PATH+=$PATH:XXX"="前后不能有空格export PATH:使PATH环境变量生效,其他变量如JAVA_HOME同理export -p:显示所有的环境变量配置环境变量使用open ...
2019-09-25 10:35:41
532
原创 自定义view
自定义view优秀讲解3.1.2 自定义 View 布局阶段在 View 的布局阶段会执行两个方法(在布局阶段,View 的父 View 会通过调用 View 的 layout() 方法将 View 的实际尺寸(父 View 根据 View 的期望尺寸确定的 View 的实际尺寸)传给 View,View 需要在 layout() 方法中将自己的实际尺寸保存(通过调用 View 的 setF...
2019-09-11 14:29:34
414
原创 Android中事件分发
1.自定义ViewGroup、View首先自定义一个父容器CustomRelativeLayout,和一个子view:CustomView,并重写父容器的dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent,重写子View的dispatchTouchEvent、onTouchEvent,以及MainActivity的onTouchEvent,...
2019-09-10 16:29:09
180
原创 Execution failed for task ':app:processDebugManifest'.
关于Androidx和Android support库共存问题解决:Error:Execution failed for task ‘:app:processDebugManifest’.Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreCo...
2019-08-17 20:14:24
7038
原创 android自定义view用path画一个长方形
这次主要是练习一下Android的自定义view和path的相关使用,所以做了一个简单的demo:自定义一个view,并用path在上面画一个可以动态改变圆角大小的长方形。自定义相关属性自定义view首先需要在values文件夹下建一个attrs文件,并在其中定义view的相关属性,如下:<resources> <declare-styleable name="Cu...
2019-08-09 16:42:21
2198
原创 Android用path画直线显示不出来
1.当用path画一条直线时,需指定Paint的Style为STROKE(描边),否则Paint会使用默认Style-FILL(填充),这种样式用path是画不出直线的2.用paint划长方形时,当需要分别画填充和描边两种样式的长方形时,要分别显式指定样式...
2019-08-09 10:12:37
1863
原创 unable to find valid certification path to requested target
1.解决方法:取消勾选charles的macOS Proxy,然后重启电脑
2019-08-05 15:33:21
294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人