android
文章平均质量分 53
SHEN_ZIYUAN
一个努力学习编码的猿
展开
-
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 · 2154 阅读 · 0 评论 -
Android 组件化
1.什么是组件化组件化简单概括就是把一个功能完整的App或模块拆分成多个子模块, 每个子模块可以独立编译和运行, 也可以任意组合成另一个新的App或模块, 每个模块即不相互依赖但又可以相互交互。2.组件间通信组件:代码隔离,源码级别的的隔离,打包Apk会把代码,资源合并,形成一个app,运行在Android系统上共用一个用户空间。因为组件处于同一内存空间,所以可以通过反射直接调用,但是这种通信方式,随着组件的增多,组件之间的交互复杂多变,组件间耦合性强,所以使用中介者模式...原创 2021-02-28 09:06:38 · 206 阅读 · 0 评论 -
Glide 原理
当一个对象的状态变化时,通知另一个对象,很容易想到用到了观察者模式,那便有被观察者,观察者,用于管理观察者的管理类。以监听Activity的生命周期为例,被观察者是Activity,Request请求为观察者,下面分析源码1.在当前Activity的FragmentManager中加入RequestManagerFragment,Fragement的生命周期跟Activity的生命周期相关联...原创 2020-02-18 17:20:31 · 301 阅读 · 0 评论 -
解析Retrofit 原理
Retrofit 主要的实现原理是动态代理,它的实现步骤主要有:1.ServiceMethod解析接口方法上的注解,生成Okhttp.Request需要的参数,根据解析参数生成okhttp3.Call;2.生成OkHttpCall,作为okhttp3.Call的代理类;3.CallAdapter把OkHttpCalll转换为Observable;public <T> ...原创 2020-01-14 14:05:08 · 186 阅读 · 0 评论 -
Rxjava线程调度原理
Rxjava 有两个链:1.自下向上调用Observable的subscribe方法,2.自上向下调用Observer的onNext方法。自下向上到ObservableOnSubscribe的subscribe方法,然后开始自上向下。线程切换是用subscribeOn和observeOn两个方法,它们生成的Observable对象都有Scheduler,Scheduler就是用来帮它们实现线程...原创 2020-01-09 15:23:48 · 426 阅读 · 0 评论 -
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 · 5624 阅读 · 2 评论 -
Fragement 生命周期原理源码解析
一、概述 Activity作为Android四大组件,它的生命周期是由ActivityManager管理。Fragement生命周期根本上是由Activity管理,比如Activity被回调onCreate时,onCreate方法调用顺序:FragmentController->FragmentManager->Fragment,同步调用Fragment的onCre...原创 2019-09-02 14:47:33 · 193 阅读 · 0 评论 -
浅谈Rxjava原理
rxjava主要分为两个大类:Observable(被观察着)和Observer(观察者)运用责任链模式,有两个链条:Observable链条和Observer链条一.Observable链条生成过程Observable.create().map().map();1.Observable.create() 创建Observablecreate对象,2.调用map方法创建Obs...原创 2019-08-30 18:04:05 · 216 阅读 · 0 评论 -
dispatchTouchEvent源码分析
dispatchTouchEvent 方法可以根据DOWN事件和move,up事件分别分析。本文章不考虑多触摸点,TouchTarget链是储存了多触摸点,pointerIdBits 属性表示触摸点Id1.DOWN事件,主要作用是确定消费路线(把处理事件的View赋值给mFirstTouchTarget)具体过程:遍历子view ,判断触摸点是否在该view中,不在,跳过该viewi...原创 2019-06-03 15:48:41 · 231 阅读 · 0 评论 -
android handler源码理解
第一步,生成Looper和MessageQueue。如果在子线程中需要先执行Looper.prepare(),生成Looper对象,储存在ThreadLocal中(实际上是储存在线程的一个成员变量threadlocals中,主要作用是隔离变量),在Looper对象中生成MessageQueue对象。private static void prepare(boolean quitAllowe...原创 2018-04-05 23:12:21 · 140 阅读 · 0 评论 -
Android view的事件分发
从activity到viewgroup到view1.当onInterceptTouchEvent为false(不拦截)、onTouchEvent 为false 不消费以下为执行顺序,先执行dispatchTouchEvent 再执行onTouchEvent从Activity的dispatchTouchEvent -> n个viewgroup...原创 2018-04-03 13:46:48 · 170 阅读 · 0 评论