自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于滑动场景解析RecyclerView的回收复用机制原理

四级缓存RecyclerView有mAttachedScrap->mCachedViews->ViewCacheExtension->RecycledViewPool四级缓存,先不涉及ViewCacheExtension,主要讲其他三级缓存存入 mCacheViews最大缓存条数:  默认缓存条数 = 2;  预缓存条数 = 一行;  最大缓存条数 = 默认缓存条数 + 预缓...

2018-05-29 20:15:47 1002

原创 React Native学习

Native 和 JS互调原理Native调JSJava JS端都准备JsModule映射表(Java在启动时创建JsModule映射表)Java调用JSModule方法时,从Java映射表找到JsModule,调用Module的动态代理的方法,在动态代理里会callFunction通过JNI调用c层的callJsFunctioncallJsFunction就是在c层通过WebKit调用js代码,...

2018-05-24 21:38:49 159

原创 Activity布局创建

一个Activity在setContentView后创建的布局以及布局在Activity内的层级如下:setContentView整个过程1. 创建DecorView,DecorView实际是一个FrameLayout;2. 依据theme加载不同的窗口修饰布局文件;3. 加载setContentView指定的布局,并且把它添加到窗口修饰布局文件中id为content的FrameLayout里;获...

2018-05-23 23:05:46 553

原创 应用启动过程

1. Launcher 接收到点击事件,获取应用的信息,向 SystemServer(ActivityManagerService 简称AMS 运行在里面) 发起启动应用的请求。2. SystemServer(AMS) 请求 Launcher Pause (Launcher 需要保存状态进入后台)3. Launcher Pause , 向 SystemServer(AMS) 发送 Pause 完毕...

2018-05-20 22:11:51 118

原创 Google IO 2018

Android P支持刘海屏幕WIFI RTT支持室内导航优化耗电量优化安全性(统一的指纹身份验证对话框和针对敏感交易的高可信度用户确认)支持加载动图 ImageDecoder,支持图形圆角等变换操作支持多摄像头AI方向的应用:新版谷歌助理Gmail智能回复功能(将推出)相册更加智能(如可以让主体与背景分开、将背景变成黑白或者对旧照片着色)更智能的新闻推荐(根据用户行为进行推荐新闻内容)Googl...

2018-05-16 20:44:56 226

原创 Kotlin

优点对比 Linux (Android基于Linux)上的其他进程通信方式(管道/消息队列/共享内存/信号量/Socket),Binder 机制的优点有:高效Binder数据拷贝只需要一次,而管道、消息队列、Socket都需要2次 通过驱动在内核空间拷贝数据,不需要额外的同步处理安全性高Binder 机制为每个进程分配了 UID/PID 来作为鉴别身份的标示,并且在 Binder 通信时会根据 U

2017-11-23 18:53:14 144

原创 RecyclerView缓存机制总结

参考 enter link description here入口Scroll、onLayout -> RecyclerView.dispatchLayoutStep2() -> RecyclerView.onLayoutChildren() -> ItemView:LayoutManager.fill() -> LayoutManager.layoutChunk() -> LayoutState.n

2017-11-23 18:51:54 2830

原创 View绘制流程总结

参考 enter link description heremeasure流程父View的measure的过程会先测量子View,等子View测量结果出来后,再来测量自己,measureChildWithMargins就是用来测量某个子View的measure()不可以被复写,但onMeasure()可以,像TextView、ImageView这些系统自带的控件都有重写,如TextView会按内

2017-11-23 18:51:30 179

原创 Lambda表达式

Lambda表达式是JAVA8的新特性匿名类new Thread( () -> System.out.print(“”));listA.forEach( (a) -> System.out.print(a));Predicate过滤public static void main(args[]){ List languages = Arrays.asList("Java", "Scala",

2017-08-02 21:07:55 202

原创 Retrofit使用详解

Retrofit 依赖compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'定义一个请求接口public interface MeituService { @GET("/users/{user}") Call<User> getUser

2017-07-31 22:41:37 602

原创 Binder通信机制

haha

2016-12-06 15:25:54 410

原创 DataBinding框架

####简介Databinding 是一个实现数据和UI绑定的框架,是一个实现 MVVM 模式的工具,有了 Data Binding,在Android中也可以很方便的实现MVVM开发模式。####解决什么问题减少编写大量的毫无营养的代码, 如 findViewById()、setText(),setVisibility(),setEnabled() 或 setOnClickList

2016-12-06 15:25:09 550

原创 Material Design

###依赖compile 'com.android.support:appcompat-v7:24.1.1'testCompile 'junit:junit:4.12'compile 'com.android.support:recyclerview-v7:23.4.0'compile 'com.android.support:design:24.1.1'compile 'com.android....

2016-12-06 15:16:00 226

原创 DataBinding实现MVVM

ViewModel和Model双向绑定,ViewModel和View单向绑定 Observable任何 POJO 对象都能用在 Data Binding 中,但是更改 POJO 并不会同步更新 UI。Data Binding 的强大之处就在于它可以让你的数据拥有更新通知的能力。有三种不同的动态更新数据的机制:Observable 对象 Observable 字段 Observable 容器类

2016-09-22 20:08:16 359

原创 Android 7.0 通知新特性

Android 7.0 通知新特性Bundling notifications调用的setGroupSummary方法构造一个分组的信息,然后子通知调用setGroup被分到这个组里面。Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_large_icon);// Create

2016-09-22 20:07:27 1099

转载 MotionEvent

android.view.MotionEventMotionEvent源代码可以在ocs看到,当然你也可以在SDK中下载源代码,或者其他地方,如:https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/MotionEvent.java    MotionEven

2016-08-12 00:49:35 255

原创 线程间通信之Handler

Handler消息机制使用Handler在主线程和子线程之间传递消息的机制,就是通过Handler获取主线程的消息队列,将子线程的消息发送到主线程的消息队列,由Looper取出后交给目标Handler处理。Looper首先主线程会默认调用Looper.prepare()创建Looper,创建的Looper对象持有一个消息队列引用MessageQueue,这样就可以通过轮询消息队列MessageQue

2015-11-08 20:05:26 329

sql语法笔记

sql语法笔记,详细的哦,觉得不错就传上来啦哈哈哈,有兴趣的可以看看。

2014-07-01

空空如也

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

TA关注的人

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