- 博客(15)
- 收藏
- 关注
原创 NestedScrollView嵌套RecyclerView 高度失效的原因
<androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="40.
2021-04-07 16:17:48
2118
原创 Android 组件化
1.什么是组件化组件化简单概括就是把一个功能完整的App或模块拆分成多个子模块, 每个子模块可以独立编译和运行, 也可以任意组合成另一个新的App或模块, 每个模块即不相互依赖但又可以相互交互。2.组件间通信组件:代码隔离,源码级别的的隔离,打包Apk会把代码,资源合并,形成一个app,运行在Android系统上共用一个用户空间。因为组件处于同一内存空间,所以可以通过反射直接调用,但是这种通信方式,随着组件的增多,组件之间的交互复杂多变,组件间耦合性强,所以使用中介者模式...
2021-02-28 09:06:38
183
原创 Glide 原理
当一个对象的状态变化时,通知另一个对象,很容易想到用到了观察者模式,那便有被观察者,观察者,用于管理观察者的管理类。以监听Activity的生命周期为例,被观察者是Activity,Request请求为观察者,下面分析源码1.在当前Activity的FragmentManager中加入RequestManagerFragment,Fragement的生命周期跟Activity的生命周期相关联...
2020-02-18 17:20:31
299
原创 解析Retrofit 原理
Retrofit 主要的实现原理是动态代理,它的实现步骤主要有:1.ServiceMethod解析接口方法上的注解,生成Okhttp.Request需要的参数,根据解析参数生成okhttp3.Call;2.生成OkHttpCall,作为okhttp3.Call的代理类;3.CallAdapter把OkHttpCalll转换为Observable;public <T> ...
2020-01-14 14:05:08
145
原创 Rxjava线程调度原理
Rxjava 有两个链:1.自下向上调用Observable的subscribe方法,2.自上向下调用Observer的onNext方法。自下向上到ObservableOnSubscribe的subscribe方法,然后开始自上向下。线程切换是用subscribeOn和observeOn两个方法,它们生成的Observable对象都有Scheduler,Scheduler就是用来帮它们实现线程...
2020-01-09 15:23:48
418
原创 Activity 启动方式singTask和singInstance的区别
在cmd 命令窗口运行 adb shell dumpsys activity activities,会打印出activity任务栈信息管理Activity从上到下display->stack->task->ActivityRecord。可以从cmd命令窗口总结出:以下情况 ,taskAffiny使用默认值,taskAffiny是用来指定activity的...
2019-09-17 16:39:32
1547
原创 webview 第二次调用loadUrl页面不刷新
一个需求,当点击Button按钮时,希望加载另一个Url。以下方法可以成功@Overridepublic void onClick(View view) { webview.loadUrl(url); webview.loadUrl( "javascript:window.location.reload( true )" );}亲测管用...
2019-09-05 15:06:49
5562
2
原创 Fragement 生命周期原理源码解析
一、概述 Activity作为Android四大组件,它的生命周期是由ActivityManager管理。Fragement生命周期根本上是由Activity管理,比如Activity被回调onCreate时,onCreate方法调用顺序:FragmentController->FragmentManager->Fragment,同步调用Fragment的onCre...
2019-09-02 14:47:33
168
原创 浅谈Rxjava原理
rxjava主要分为两个大类:Observable(被观察着)和Observer(观察者)运用责任链模式,有两个链条:Observable链条和Observer链条一.Observable链条生成过程Observable.create().map().map();1.Observable.create() 创建Observablecreate对象,2.调用map方法创建Obs...
2019-08-30 18:04:05
195
原创 dispatchTouchEvent源码分析
dispatchTouchEvent 方法可以根据DOWN事件和move,up事件分别分析。本文章不考虑多触摸点,TouchTarget链是储存了多触摸点,pointerIdBits 属性表示触摸点Id1.DOWN事件,主要作用是确定消费路线(把处理事件的View赋值给mFirstTouchTarget)具体过程:遍历子view ,判断触摸点是否在该view中,不在,跳过该viewi...
2019-06-03 15:48:41
227
原创 module.exports与exports的区别
每一个node.js文件都会创建一个module对象,同时,module对象会创建一个叫exports的属性,属性值为一个对象,初始值为{}。module.exports={ }。module.exports是每个nodejs文件对外输出的值,require请求到的值就是module.exports这个值。aa.js文件var hello=function () { console.info...
2018-04-17 14:55:14
195
原创 android handler源码理解
第一步,生成Looper和MessageQueue。如果在子线程中需要先执行Looper.prepare(),生成Looper对象,储存在ThreadLocal中(实际上是储存在线程的一个成员变量threadlocals中,主要作用是隔离变量),在Looper对象中生成MessageQueue对象。private static void prepare(boolean quitAllowe...
2018-04-05 23:12:21
134
原创 Android view的事件分发
从activity到viewgroup到view1.当onInterceptTouchEvent为false(不拦截)、onTouchEvent 为false 不消费以下为执行顺序,先执行dispatchTouchEvent 再执行onTouchEvent从Activity的dispatchTouchEvent -> n个viewgroup...
2018-04-03 13:46:48
164
原创 Java编译期和运行期
编译期: 是指把源码交给编译器编译成计算机可以执行的文件的过程.在Java中也就是把Java代码编成class文件的过程.编译期只是做了一些翻译功能,并没有把代码放在内存中运行起来,而只是把代码当成文本进行操作,比如检查错误.运行期:是把编译后的文件交给计算机执行.直到程序运行结束.所谓运行期就把在磁盘中的代码放到内存中执行起来.在Java中把磁盘中的代码放到内存中就是类加载过程.类加载是运行期的...
2018-03-17 23:09:31
7492
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人