- 博客(151)
- 资源 (3)
- 收藏
- 关注

原创 Android架构篇
1、RxJava+Retrofit+OkHttpAndroid Retrofit详解 - 简书Retrofit2详解_qq_36699930的博客-优快云博客_retrofit2优美的异步 --- RxAndroid - 简书2、EventBusEventBus 使用(全面分析,细节提醒)_宇宝守护神(rainyang)的博客-优快云博客_eventbus3、Glide、Picasso、FrescoPicasso,Glide,Fresco对比分析_李彬博客专栏-优快云博客
2021-10-02 16:06:50
155

原创 Android进阶篇
1、ANRAndroid ANR:原理分析及解决办法 - 简书Android造成OOM 和ANR的原因及解决办法 - 简书2、内存泄漏Android面试被问到内存泄漏了咋整? - 简书3、性能优化Android面试之性能优化 - 简书
2021-10-02 15:54:20
176

原创 Android提升篇
1、View绘制流程【朝花夕拾】Android自定义View篇之(一)View绘制流程 - 宋者为王 - 博客园Android中View的绘制流程_进击的小宇宙-优快云博客_android view绘制流程2、事件分发机制android中的事件传递和处理机制 - fuly - 博客园3、屏幕适配Android 今日头条屏幕适配详细使用攻略_luo_boke的博客-优快云博客_android 今日头条适配https://github.com/JessYanCoding/Andr
2021-10-02 15:50:08
146

原创 Android基础篇
1.Android四大组件与作用Android四大组件分别是:Activity, Service,Content Provider,Broadcast ReceiverAndroid四大组件的作用 - 简书Android 四大组件,五大存储,六大布局_xianKOG的博客-优快云博客_activity
2021-10-02 12:22:07
145
原创 (面试)View相关知识
方法只会导致当前view的measure和layout,而draw不一定被执行,只有当view的位置发生改变才会执行draw方法,因此如果要使当前view重绘需要调用invalidate。在非UI线程中调用。viewGroup调用invalidate会使viewGroup的子view调用draw,也就是viewGroup内部的子view进行重绘。view调用invalidate将导致当前view的重绘(draw调用),view的父类将不会执行draw方法。1、View绘制流程。
2025-05-17 15:55:41
254
原创 (面试)TCP、UDP协议
同时,服务器将客户端的ISN+1设置为确认号ack的值,以此确认已收到客户端的SYN报文,并期待接收到的下一个数据报的起始序号为x+1。客户端向服务端发送一个SYN报文(SYN=1),并指明客户端的初始化序列号ISN(x),即图中的seq=x,它表示本报文段所发送的数据的第一个字节的序号。此时,客户端进入FIN_WAIT_1状态,等待服务器的确认。客户端在收到服务端的FIN报文后,会响应一个ACK报文,其中ack序号值为w+1,同时将自己的序列值加1作为ACK报文的seq序号值,即seq=u+1。
2025-05-17 15:14:11
470
原创 (面试)List、Map、Set的区别与联系
3.2 LinkedHashSet 继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap。3.1 HashSet 底层是由 Hash Map 实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hashCode()方法;1.3 Vector 基于数组实现,线程安全,效率低,增删慢,查找慢;TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序。(使用增删比较多的场合),非线程安全,效率高,,链表内存是散列的,
2025-05-16 21:31:44
260
原创 (面试)Handler消息处理机制原理
Handler是用于实现线程间通信和任务调度的一种机(HandlerMessageHandler允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread,子线程不能更新UI。如果子线程想更新UI,需要通过Handler发送消息给主线程,进而达到更新UI的目的。
2025-05-15 22:26:35
720
原创 Activity动态切换Fragment
如果应用具有复杂的导航结构,可以考虑使用 Android Jetpack 的 Navigation Component。Navigation Component 提供了一个声明式的导航系统,可以简化 Fragment 的切换和管理。Activity 动态切换 Fragment 是 Android 开发中常见的需求,用于构建灵活的用户界面。总而言之,Activity 动态切换 Fragment 是 Android 开发中一项重要的技能。选择合适的方法,并遵循最佳实践,可以构建灵活、高效和用户友好的应用。
2025-05-10 18:26:31
652
原创 Looper死循环阻塞为什么没有ANR
Looper 死循环阻塞没有 ANR 的原因在于 ANR (Application Not Responding) 的检测机制依赖于特定线程的事件处理超时。
2025-05-10 18:19:44
468
原创 (面试)LeakCanary
开发者无需手动进行内存分析,LeakCanary 会自动检测、报告并提供详细的泄漏追踪信息,帮助开发者快速定位和修复内存泄漏问题。它还会对泄漏进行分组,相同的泄漏只显示一个追踪,减少冗余信息。LeakCanary 还提供了一个可视化的界面来查看泄漏详情 ,并能区分应用自身代码导致的泄漏和第三方库导致的泄漏。它能够自动检测并报告应用中的内存泄漏,极大地简化了 Android 开发中的内存泄漏排查过程。) 来跟踪这些对象。应用泄漏是由应用自身代码引起的,而库泄漏是由第三方库中的 bug 引起的。
2025-05-10 13:56:27
249
原创 MVC、MVP、MVVM三大架构区别
C(Controller):主要功能为控制View层数据的显示,通常与写在Activity类、Fragment类、View类中,通过接口与Modle层进行通信,并将数据显示到View上。实现了View层和Model层的分离,一个View可以连接多个Modle,一定程度上实现Modle的复用,且修改View层的代码不影响Modle层的。M(Model):主要处理数据的存储、获取、解析。M(Model):主要处理数据的存储、获取、解析。V(视图):负责显示数据和接收用户输入。
2025-05-05 21:09:22
452
原创 kotlin 扩展函数
值得注意的一点是,Kotlin 中的扩展函数采用静态解析的方式工作。需要注意的是,尽管看起来像是对象的方法调用,但实际上扩展函数是在编译期静态绑定的,并不会真正成为类的一部分。Kotlin 的扩展函数是一种强大的机制,允许开发者为已有的类添加额外的功能,而无需继承该类或对其进行任何修改。综上所述,Kotlin 提供了非常简洁优雅的方式来增强现有库或者框架的能力,即通过声明外部可见性的扩展方法达成目的而不必担心破坏原有结构设计。通过这种方式,可以在不改变原始类的情况下为其增加新的行为。在这个案例里,我们为。
2025-05-05 16:53:48
433
原创 Kotlin中 StateFlow 或 SharedFlow 或 LiveData的区别
如果你需要生命周期感知的数据流并且想要自动处理内存泄漏,使用LiveData。如果你在使用协程并且需要管理单个状态的异步更新,使用StateFlow。如果你在使用协程并且需要存储和回放多个值,或者需要缓冲机制,使用SharedFlow。每种工具都有其适用的场景,选择哪一种取决于你的具体需求和项目架构。在实际开发中,你可以根据是否使用协程、是否需要历史记录或缓冲、以及是否需要考虑观察者的生命周期等因素来决定使用哪种工具。
2025-05-05 16:40:03
595
原创 Android代理模式
为其他对象提供一种代理以控制这个对象的访问。1、通常我们见得最多的就是静态代理模式,静态代理模式目的也很明确,代理需要代理的方法即可2、代理模式是一种比较简单的模式,通常我们使用的时候往往夹杂着其他比较复杂的知识。比如Android源码中,系统各种Service服务框架跨进程使用binder调用的时候就使用代理模式。这里就不扩展开了,有兴趣的同学可以看下我另一篇文章PackageManagerService服务框架详解3、虽然代理模式是一种相对简单的模式,但它十分重要。
2025-05-05 14:48:51
609
原创 Builder模式
整体来说Builder模式比较简单,核心就是隐藏构造方法,通过一个静态内部类封装构造。隐藏构建过程。主要使用于对象比较复杂的时候, Android中我们使用最多的就是AlertDialog了。
2025-05-05 14:43:58
365
原创 Android工厂模式
工厂模式是创建型模式,使我们常用/常见的模式之一。多用于需要生成复杂对象的地方。用new就可以完成创建的对象就无需使用。工厂模式降低了对象之间的耦合度,由于工厂模式依赖抽象的架构,实例化的任务交由子类去完成,所以有很好的扩展性。
2025-05-05 14:42:43
357
原创 观察者模式
定义一个被观察者和多个观察者,每当被观察者变化,所有观察者都会得到通知。优点:1、观察者和被观察者解耦 2、增强灵活性,解耦缺点:由于java代码的顺序执行,要考虑被察者的执行效率,多个观察者需要及时响应就得考虑异步的问题了。观察模式核心:一个list合集,提供add,remove方法,遍历观察者,就是一个list的遍历。
2025-05-05 14:38:53
959
原创 适配器模式
将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作现在需求来了,我要出水口既能大量出水,也可以小量出水。而我们不能去更改BigWaterTap,因为通常很多时候一个类拟定好了过后,我们无法再去修改了。也没有源码。给它再继承SmallOutlet这个接口。我们需要的是另外的办法来添加出水量小的方法。这个时候适配器模式就派上用场了。适配器模式写法有两种,这里先看第一种写法叫类适配器模式类适配器模式@Override调用输出这里就省略了。
2025-05-05 14:36:59
710
原创 Android 单例模式
确保某一个类只有一个实例,并且自行实例化,向整个系统提供这个唯一实例。单例模式不管用那种方式实现,核心思想都相同1、构造函数私有化,通过一次静态方法获取一个唯一实例2、线程安全最后推荐使用文中DCL方式和静态内部类的方式来创建单例模式。
2025-05-05 14:24:25
724
原创 Kotlin 的 suspend 关键字
在传统的阻塞式编程中,如果一个函数需要执行耗时操作(例如网络请求、文件 I/O),它会阻塞当前线程,直到操作完成。这意味着线程在等待期间无法执行其他任务,导致资源浪费和响应延迟。关键字是 Kotlin 协程的核心组成部分,它用于标记一个函数可以被挂起(暂停执行)并在稍后恢复执行,而不会阻塞线程。当前协程的执行,将线程释放给其他协程或任务。当耗时操作完成后,协程会在合适的时机。执行,从挂起的地方继续执行。关键字本质上是告诉编译器,这个函数是一个潜在的。编译器会生成额外的代码来处理协程的挂起和恢复。
2025-04-22 23:27:42
859
原创 APP上架平台
小米开发平台:https://account.xiaomi.com/fe/service/login/password?华为应用平台:https://id1.cloud.huawei.com/CAS/portal/loginAuth.html。Oppo平台:https://open.oppomobile.com/#/resource/list。Vivo平台:https://dev.vivo.com.cn/?易版权:http://www.yibanquan.com.cn/index.at。
2024-01-14 13:12:48
532
原创 adnroid studio debug模式提示 Method breakpoints may dramatically slow down debugging
之前不小心打了一个断点,然后项目长时间不能启动,保持一个加载的状态,并且提示Method breakpoints may dramatically slow down debugging,百度之后才知道是打了方法断点的原因。弹出如下提示框,取消java Method Breakpoints的勾选。快键键:ctrl-shift-F8。
2022-12-28 11:33:08
357
原创 Android Studio中layout编辑窗不能预览Material Design的控件问题(AppBarLayout)
Android Studio中layout编辑窗不能预览Material Design的控件问题(AppBarLayout)
2022-10-22 13:40:42
1049
转载 Android 多渠道打包看这一篇就够了
Android 多渠道打包 - 简书Android 多渠道打包看这一篇就够了_Android-海绵的博客-优快云博客_android 多渠道打包
2022-05-27 21:35:21
223
转载 Dialog闪退问题-View=DecorView@XXXX[XX] not attached to window manager
在使用Dialog的时候,经常会出现下面的报错:java.lang.IllegalArgumentException: View=DecorView@xxxx[xx] not attached to window manager出现该错误的原因是在dialog调用dismiss方法时,activity已经销毁了,使得dialog无法获取activity对应的window manager进而抛出异常。该异常一般出现在异步操作,如网络请求后的回调。要解决该异常问题,可以先调用activity
2022-05-16 10:39:10
2334
原创 CentOS 8.2安装MySQL5.7和JDK和Tomcat
MySQL5.7结合两篇文章阿里云服务器CentOS8.2安装MySQL5.7_多学习,多总结-优快云博客Mysql安装失败-GPG验证不通过_yaoyaozaiye的博客-优快云博客JDKLinux CentOS 8 安装与配置 JDK - 随风秋叶 - 博客园# set java environment JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64 PATH=$PATH:$JAVA_
2022-02-28 20:39:10
598
原创 Android 开源第三方库与优秀项目
目录1、开源第三方库2、优秀项目1、开源第三方库1.AgentWeb:GitHub - Justson/AgentWeb: AgentWeb is a powerful library based on Android WebView.2、优秀项目开眼 Eyepetizer:GitHub - VIPyinzhiwei/Eyepetizer: ????基于 Kotlin 语言仿写「开眼 Eyepetizer」的一个短视频 Android 客户端项目,采用 Jetpack + 协程实现的
2021-10-04 17:19:09
161
原创 关于红色警戒2不能在Win10&64位系统上运行的问题的解决
博主前两天去准姐夫家做客,中间我问他学生时代喜欢玩的游戏是什么,让他一个80后那么激动是这款经典到家的游戏,红警,临走的时候还跟我要我下次去的时候带着电脑跟他打一局。。。回来的时候也没有太在意,今天突发奇想下载下来重温一下,可是发现Win10的系统运行不了,总之就是出现各种问题,这款游戏就这么被Windows抛弃了,对于我这种怀旧的人怎么能受得了,搜索了很多种办法,最后在Google上找到了一种...
2021-10-02 13:42:54
38351
26
原创 IDEA如何打包war包
方法/步骤打开idea开发工具,在File下找到Project Structure...(注意:低版本的idea在Nevigate目录下找)在打开的页面中找到Artifacts,点击右边的“+”,定义war包的名字和war包保存的路径,如果下面显示.MF file not found in Accept.war,那么要继续进行配置。否则在项目运行后在设置好的路径下找不到war包,这时点击下面绿色加...
2021-10-02 13:37:08
19010
转载 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案。标准的MVC设计模式,将整个系统划分为显示层、Controller层、Service层、Dao层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理, MyBatis作为数据对象持久化引擎。一....
2021-10-02 13:36:21
294
原创 Android面试经验总结
Android基础篇1、Activity2、Fragment3、Service4、BroadcastReceiver5、ContentProvider6、Handler7、Context8、AsyncTask/Thread/HandlerThread9、WebView10、Android各版本新特性Android提升篇1、Window/View/Activity2、View绘制流程3、事件分发机制4、动画5、Paint6、Canvas7、Path8、Recycle
2021-10-01 19:50:32
142
原创 Android面试简历
个人简历 个人信息姓名:许*志 性别:男现居住地:广州市-番禺区 出生年月:1994年学校:广东科学技术职业学院 ...
2021-09-27 23:07:52
6567
转载 Linux安装mysql出现1045,1130错误
MySql 解决方案:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)转载:https://www.pianshen.com/article/4735331532/登录mysql数据的时候:mysql -uroot -p出现:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:
2020-11-05 17:52:29
152
原创 Android程序员如何接私单?
工作经历:2016年9月 - 至今 (3年以上工作经验) 专业:计算机应用技术手机号码:13640648415个人技能清单1、熟悉使用Glide、Picasso、Fresco加载图片资源。2、熟悉使用MVP模式作为项目架构。3、封装整合Rxjava+Retrofit+OkHttp作为项目的数据传输和处理。4、集成微信支付、支付宝支付功能。5、熟悉使用Git、SVN作为整个APP项目的代码版本控制。6、熟悉混合开发,原生与JS、H5互相交互调用。7、熟悉使用Leakcana
2020-05-20 16:44:05
830
原创 Android 蓝牙入门与连接
相关文章:1.https://www.jianshu.com/p/4ecc996794512.https://blog.youkuaiyun.com/zqf_888/article/details/810606063.https://www.cnblogs.com/lwkdbk/p/9939643.html4.https://www.cnblogs.com/demodashi/p/8481659.html5.https://www.cnblogs.com/weizhxa/p/5792775.html
2020-05-19 15:31:26
210
Redis安装和配置及开机自启
2018-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人