自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 ViewModel 源码设计思路分析

转眼一年又过去大半了,在2022年,初定了大多计划,搬家,换公司,很多事情都一托再拖。这里分享一篇我在公司内部做的分享文章吧,删除了部分对公司内部代码的探讨。公司中的项目运用到了大量的组件封装。有的是对第三方组件进行二次封装,有的是从零开始设计,如何设计一个可扩展性高,容易使用的组件呢?可以参考参考google开发者是如何设计组件的。我们以ViewModel组件为例,试图从源码中,窥探作者是如何设计ViewModel组件的。如果是我们,我们会怎么设计ViewModel组件呢?需求分析。

2022-11-08 14:17:12 429 1

原创 CoroutineExceptionHandler使用的踩坑日志

CoroutineScope作用域下面这段使用coroutineScope作用域,在第7行launch中抛出了异常,即使在该launch的父协程,也就是coroutineScope的根协程设置了捕获(即第三行设置了捕获),也并不会执行该捕获。异常还是会向上传输给根作用域lifecycleScope中的根launch(即第一行的launch)。所以这里需要在第一行的launch那里,即在coroutineScope中,只有在根协程设置CoroutineExceptionHandler才有效。.

2022-02-10 22:15:42 2203

原创 双向循环链表 笔录

双向循环链表中,每个节点都有2个指针,分别指向前一个节点和后一个节点。链表头有一个head,是空节点,head节点的前一个节点指向链表最后一个节点,链表最后一个节点的后一个节点是head节点。查询的时候,如果index小于链表长度一半,从头开始查询,如果index长度大于链表长度一半,则从末尾开始查询。故,时间复杂度是O(n/2)内存空间不一定是连续的,由于查询需要遍历每一个节点,并取获节点的next节点。遍历查询效率不如数组。但是中间的插入,删除的效率优于数组。在java中,li...

2022-01-18 14:23:37 592

原创 Head First 设计模式笔录--观察者模式

观察者模式定义了一种一对多的依赖关系,当一个对象改变状态时,他的所有依赖者都会收到通知并更新数据。比如我们常见的设置监听,button.setOnClickListener也算是观察者的一种。核心关注点观察者与被观察者是松耦合的,被观察者只需要知道,观察者都实现了统一的接口,都提供了update的方法。只要接口不变,改变任何一方的内容,都不会对另一方造成影响。被观察者中持有观察者的list,发生数据变化就通知到list中的所有观察者,注意解除观察的时候及时移除观察者,避免内存泄漏.气象站

2021-12-19 16:56:25 484

原创 Head First 设计模式笔录--策略模式

核心写法创建一个策略接口,并创建不同的策略类实现该接口创建一个基类,依赖策略接口(这里也符合面向接口编程)在基类提供策略接口的set方法,由外部根据需求动态设置具体的策略类关于鸭子的设计故事文中关于鸭子的设计图:抽象基类Duck,依赖了不同的接口,飞行的FlyBehavior 接口和叫的QuackBehavior接口。这俩接口都拥有各自的实现类。在Duck中提供了set方法,用来让子类对俩接口具体实例化,同时可以动态设置接口的具体实现。将部分功能延迟到子类来.

2021-12-18 13:43:09 740

原创 如何指定JVM target 为1.8

新建项目,在使用kotlin总会报错,默认项目又没有指定好kotlin的JVM target。写的容易忘记,这里记录下,方便后续快速使用。 kotlinOptions { jvmTarget = "1.8" }

2021-12-09 09:44:01 2721

原创 2021-10-15 Bad method handle type 7

2021年10月15日 填坑笔录枫叶看着挺美的,但是一大片的红色,让我想起了下面这种情况,顿时就觉得,似乎不是那么美了。今天创建了一个空的项目,准备了解下Retrofit的源码,刚刚引入 implementation 'com.squareup.retrofit2:retrofit:2.9.0'就报错了 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.ba...

2021-10-15 11:46:54 219

原创 Handler同步屏障

首先需要发送一个特殊消息作为屏障消息,当消息队列检测到了这种消息后,就会从这个消息开始,遍历后续的消息,只处理其中被标记为“异步”的消息,忽略同步消息(所以叫“同步屏障”),相当于给一部分消息开设了“VIP”优先通道。...

2021-06-03 11:38:05 279 3

原创 红米手机scrollView嵌套recyclerView只显示1个item填坑

项目需求最近需要在一个页面增加出价记录列表功能,ui图如下:实现方法很多,我直接用的adapter添加footerView实现。测试数据,item个数8个,设置超过3个就显示展开栏,否则隐藏展开栏。展开栏是否显示的逻辑判断是判断item个数,其他手机,华为,oppo都是正常的,但是2台红米手机都无法显示正确的item个数,只显示了1个。并且不显示展开栏。recyclerView的适配器用的第三方库BaseRecyclerViewAdapterHelper。重点来了,在这个页面的布局中

2021-04-25 14:21:44 272

原创 jetpack学习笔录-WorkManager

WorkManager是一个API,用来调度任务,哪怕进程关闭或者设备重启都没事。这些任务是可延期的异步任务。之所以关闭进程或者设备重启都没事,是因为已调度的工作都存储在SQLite中。WorkManager是一个单例,获取方式:WorkManager.getINstance(this)上图是使用WorkManager的流程...

2021-03-12 13:58:37 310 2

原创 Jetpack学习笔录-ViewModel

ViewModel简单来说,activity因为屏幕旋转这类问题导致activity被销毁重新创建的时候,数据会丢失。为了避免数据丢失的情况。可以把数据存储在ViewModel中。来张官网的生命周期图感受下注意啦:activity或fragment的作用范围从created到finished,你不能混淆销毁。请记住,当一个设备被旋转时,activity会被销毁,但是任何与它相关的ViewModel实例不会被销毁。viewModel不可以存在上下文引用!会引发内存泄漏...

2021-02-28 15:38:09 198

原创 Jetpack学习笔录-LifecycleObserver

lifecycle本身是一个抽象类,位于androidx.lifecycle包,该包下有一些列生命周期感知型的组件。lifecycle主要用于存储有关组件的生命周期状态信息,比如activity,fragment,或者是整个应用的生命周期。跟踪生命周期主要由:状态和事件 这两个表示。来张官网的图感受一下新建项目,创建一个新的empty Aactivity ,默认都是继承自AppCompatActivity的,查找其父类,发现ComponentActivity实现了Lifecycle.

2021-02-21 18:01:20 2436

原创 Jetpack学习笔录-dataBinding

dataBinding数据的双向绑定,使用dataBinding,在xml布局文件中·对指定的布局内容设置,当数据内容发生改变,自动更新到xml上,这配合LiveData使用。另外可以编写顶层函数,顶部增加@BindAdapter注解。/** * A Binding Adapter that is called whenever the value of the attribute `android:progressTint` * changes. Depending on the value

2021-02-17 23:32:12 194 3

原创 android跨进程通信-AIDL

本篇主要记录内容:1、aidl基本使用 2、in、 out 、inout、onway关键字含义 3、aidl在使用时对线程的注意事项。跨进程通信时,是在本地的一个binder线程池中执行的。 4、传递bundle对象时,需要注意的点AIDL通信方式在 Android 中,一个进程通常无法访问另一个进...

2020-09-14 01:35:46 681 1

原创 Unable to extract the trust manager on Android10Platform

无法在android10平台上提取信任管理器,sslSocketFactory是class com.android.org.conscrypt.OpenSSLSocketFactoryImpl。记录一下填坑内容。服务器测试接口是http的,不是https,之前一直拿的8.0的手机调试一直好好的,今天换成android 10的手机测试发现请求服务器的时候奔溃了。,网上这个问题比较少嘞,在此记录一下。有大佬说这是okhttp的问题,解决方案是X509TrustManager改成X509Exte.

2020-05-21 10:29:54 13118 10

原创 ARouter的compileDevDebugJavaWithJavac填坑记录日志

好好的项目突然运行起来报错:build Output是:完全看不出所以然,看到下面这句:在as控制台查看之后提示说子模块value文件,没在setting.gradle文件中配置,神特么无语。value文件和setting文件有几毛钱关系呢。看看这优秀的提示:经过网络各种搜索无果,最终决定用最简单的排除法。在一步步排除改动的代码后,终于发现,ARouter中,参数传递的成员变量,不能是private的上面这样就是错误的,改成Public即可。as提..

2020-05-11 11:25:25 266

原创 unable to find valid certification path to requested target拉不了包处理

【最新】最新记录更新:2019-12-15,android studio版本3.5.3 。先说明一下,本篇文章最早是在10月份记录的,当时遇到的问题按照原来的方式确实解决了,但是后面又出现了这个问题,且一直无法解决,现在是最新的解决方案!!!!!而且!!!!我百度,google,stack overflow各种途径都看了,目前还没看到有又相同的方案。下面直接进入主题:很多人说证书不被信任...

2019-10-12 01:19:49 2371 3

原创 NestedScrollView中嵌套recyclerView的焦点问题

思路:一开始认为是adapter刷新数据,调用notifyDataSetChanged的时候获取了焦点,所以显示为置顶,那我就在刷新数据后延时1.5秒在去设置nestedScrollView滑动到底部。即调用下面:ScrollView.fullScroll(View.FOCUS_UP);然并软。后来神奇的觉得,会不会是滑动冲突了,于是又在xml文件的recyclerView...

2019-08-13 17:29:17 2152

原创 AAPT2 error:com.android.tools.aapt2.Aapt2Exception

直接上问题:接手同事项目编译后这样了~处理方法:升级到3.2.0或者更高就可以了

2019-08-12 10:11:56 238

原创 compileDebugJavaWithJavac

Glide添加高斯模糊的时候,突然出现。找了代码、Logcat、run都没看出问题在哪里。最后网上找到解决方法记录一下~:输入:就能看到问题所在。...

2019-08-05 15:04:59 253

原创 策略模式详解

出于对设计模式的学习复习,才决定写的这一系列文章,一方面是帮助自己更快的复习记忆,另一方面是帮助有需要的人快速入门,分享自己的学习内容吧。图片来源网络概念和目的设计模式是众多经验丰富的工程师经过大量的实验花费了很多很多时间才总结出来的,可以说是众多经验的结晶了。在所有的中、大型项目中,设计模式随处可见。使用设计模式,是为了提高代码的可重用性、可读性以及可靠性。适当的使用设...

2019-06-22 15:21:38 786 3

原创 android核心版本特性(官网)

看了一些文章~没有合适的,个人觉得对于一些和编程无关紧要的特性,比如xxx速度提升多少这种就不要列出来啦~下面是从官网中截取的部分我觉得重要的特性。如果想看全面完整的:官网,不用科技也能看~就是慢一丢丢。1、4.0特性全屏沉浸模式现在,您的应用可以利用设备屏幕上的每一个像素显示内容和捕获触摸事件。Android 4.4添加了新的全屏沉浸模式,让您可以在手机和平板电脑上创建...

2019-06-18 17:17:08 896

原创 装饰者模式详解

出于对设计模式的学习复习,才决定写的这一系列文章,一方面是帮助自己更快的复习记忆,另一方面是帮助有需要的人快速入门,分享自己的学习内容吧。图片来源网络概念和目的设计模式是众多经验丰富的工程师经过大量的实验花费了很多很多时间才总结出来的,可以说是众多经验的结晶了。在所有的中、大型项目中,设计模式随处可见。使用设计模式,是为了提高代码的可重用性、可读性以及可靠性。适当的使...

2019-06-16 15:10:59 279

原创 桥接器模式详解

出于对设计模式的学习复习,才决定写的这一系列文章,一方面是帮助自己更快的复习记忆,另一方面是帮助有需要的人快速入门,分享自己的学习内容吧。 ...

2019-06-14 11:32:55 1927

转载 RxBus的使用及解析

看了挺多文章的,大部分都是直接给最后结果的,这篇不是,而是一步一步的敲出最后的结果,有步骤的内容更有助于理解,可以知道为什么这么写~觉得很好就分享了,下文是转载自:RxBus的使用及解析前言相信项目中使用了Rxjava的你,一定会选择使用RxBus而不是EventBus作为数据总线工具。那么你真的了解RxBus吗?下面就跟着我一起来探个究竟吧。注:本文基于Rxjava2.0,还在使用...

2019-06-06 10:34:23 3442

原创 适配者模式详解

出于对设计模式的学习复习,才决定写的这一系列文章,一方面是帮助自己更快的复习记忆,另一方面是帮助有需要的人快速入门,分享自己的学习内容吧。先来张女神图亢奋一下,嘿嘿嘿~(四月是你的谎言)概念和目的设计模式是众多经验丰富的工程师经过大量的实验花费了很多很多时间才总结出来的,可以说是众多经验的结晶了。在所有的中、大型项目中,设计模式随处可见。使用设计模式,是为了提高代码的可...

2019-05-30 12:52:36 1428

原创 Glide加载图片不更新问题

问题:在一个项目中使用了Glide加载本地图片,比如这里我选择保存的图片是: //保存图片的地址 private String imgSave = "/" + Environment.getExternalStorageDirectory().getPath() + "/fitness/" + "addpublic.png";然后我加载这张图片,ok成功了...

2019-05-21 14:30:19 2761

原创 Handler源码流程解析,面试常客!!傻白甜式阅读体验!

handler机制属于面试常客啦,看懂handler源码有助于我们理解使用。网络上的源码解析也有很多,这篇是自己边看源码边记录的博客,加深印象。本篇将会从handler的使用流程出发,也是分享自己是如何看源码的,当然,平时我看源码就是先百度看其他大佬的源码解析,然后在自己看源码比较好,最后在自己总结回顾下。这最后一步很早就知道,只是之前并不知道他的重要性~本文内容图解handler机制...

2019-05-14 23:09:54 325

原创 scroller使用及初步源码解析

scrollTo 和 scrollBy 的区别:scrollTo是移动到一个具体的坐标,相对于(0,0)坐标的位置。而scrollBy是表示移动的增量,相对于上一次坐标的位置。(上一次坐标的位置不一定是(0,0)。注意:"scrollTo和scrollBy移动的是view的内容,如果是在viewgroup中使用,移动的是所有的子view"-----------------------就是说...

2019-04-24 10:03:06 288

原创 频道页面拖动效果

最近看了视频学习了类似网易的频道拖动效果,就跟着敲了几遍,下面是总结和记录:先看效果图,ezgif-2-92859805fdb4.gif实现的效果:1.长按按钮,实现btn的拖拽,原来的位置要有一个虚线为底的btn2.当拖拽放到某个位置时,原来的位置的btn要删除掉,拖拽的btn放入当前位置。btn背景色恢复。具体代码:java文件:public class ...

2019-04-24 09:56:36 230

原创 支付宝支付DEMO在沙箱测试下使用

网络上已经有很多人写得很好了,但基本是已经在支付宝的申请的应用通过的情况下,这里个人记录沙箱测试。android客户端的接入APP支付 官方接口文档可以瞅瞅先看图:支付流程:(这个要先看懂~)秘钥去哪弄?看这里进入上面给的链接,点击SDK及DEMO下载。点击这个下载创建自己的android项目,在lib文件夹下面复制粘贴SDK,同时在a...

2019-04-24 09:50:06 779

原创 最通俗易懂的java 六大原则--代码解析

一、依赖倒置原则 Dependency Inversion Principle (DIP)首先,什么是依赖呢?如果模块A使用或者调用了模块B,我们称A依赖B。低层模块:在程序设计中,一些类实现了最基本、基础的操作。我们称呼为低层模块。高层次模块:一些类实现了复杂的逻辑封装,并且依赖低层次模块。指导方针:1、高层模块不应该依赖于低层模块,二者应该依赖于抽象类。...

2019-04-24 01:34:12 1397

原创 alertDialog设置自定义View时,两侧有空白

练习代码,请无视命名规则等细节, ̄□ ̄||使用alertDialog自定义view代码: View view = View.inflate(getApplicationContext(),R.layout.dialog_biaozhi,null); TextView tvShuoMing = view.findViewById(R.id.tv_shuoming); ...

2019-04-15 16:38:06 1449

原创 Cannot fit requested classes in a single dex file

引用第三方库的jar文件,都有可能会触发这个错误。主要原因是你的项目貌似有点大,已经超过65k个方法。一个dex已经装不下了,需要个多个dex,也就是multidex ,因为Android系统定义总方法数是一个short int,short int 最大值为65536上面是百度说法,但是奇了怪了,我并没有添加太多东西,因为是新创建的项目,没加多少东西,第三方库也是,突然就这样了,不过...

2019-04-12 15:04:16 1027

原创 Android事件分发机制详解

事件分发机制有多重要就不多说了,处理滑动冲突时,这是必备的基础知识!写下这篇文章的目的是确定自己是否真的理解,有助于加深印象以及了解自身理解状况吧,算是一份读了几篇文章之后的读后感。(ps:2019-4-30距离第一次写也才20多天的时间,回想事件分发的细节竟然一时想不起来,回来看到这个,顿时感觉写文章好有意义!而且自己写的文章,很符合自己的口味,读起来很舒服呀~一气呵成!^_^)分发对象...

2019-04-08 13:11:35 201

原创 动态设置view宽高无效

遇到的问题是,代码中写了如下设置方法无效问题,LayoutParams params=new LayoutParams (LayoutParams.MatchParent,111);view.setLayoutParams(params);依然无效,折腾了好一会,发现存在这么一个问题,在xml中对view设置了宽高,并且我的view在xml中有使用到shape,在shape中也设置了...

2019-04-04 17:23:03 3645 1

原创 view设置setOnTouchListener时,黄牌警告

Custom view `AutoRelativeLayout` has setOnTouchListener called on it but does not override performClick less... (Ctrl+F1)If a View that overrides onTouchEvent or uses an OnTouchListener does not also...

2019-04-04 11:40:11 4649

原创 Fragment嵌套Fragment

问题1、fragment嵌套fragment不显示问题通常时候,我们制作底部Tab切换,会用到fragment。即一个Activity下,使用4种fragment。这次遇到的问题是关于fragment再次嵌套fragmen的问题,功能需要在其中一个fragment中再次嵌套frament,使用viewPager嵌套,此时需要注意一点,使用viewpager包裹住子fragment,我们都知道v...

2019-04-01 12:57:45 6207 2

转载 Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢?说回面试的事,这份面...

2019-03-30 15:07:02 188

转载 Android四大组件:BroadcastReceiver史上最全面解析

为了方便复习归类,转载一篇大佬的文章,转载自:https://www.jianshu.com/p/ca3d87a4cdf3前言BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于BroadcastReceiver的一切相关知识目录示意图...

2019-03-21 12:51:55 278

空空如也

空空如也

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

TA关注的人

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