自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 源码分析:Service的绑定过程(bindService)

文章目录ContextWrapper#bindService(除特殊说明外,以下代码都基于API25)ContextImpl#bindServiceContextImpl#bindServiceCommonLoadedApk#getServiceDispatcherLoadedApk.ServiceDispatcher.InnerConnectionContextImpl#bindServiceC...

2019-05-24 20:49:11 609

原创 HashMap源码分析(JDK1.8)

文章目录前言源码分析需要先了解的知识将会用到的实例常量将会用到的实例变量Node(存储键值对的节点)构造方法默认的构造方法带一个Map类型参数的构造方法带一个int参数的构造方法带两个int参数的构造方法put方法(增)putIfAbsentresize方法(扩容)putValremove方法(删)removeNodereplace方法(改)getNodeget方法(查)小结参考前言本文将对H...

2019-05-20 21:22:16 130

原创 利用KMP算法解决LeetCode第28题:实现strStr()

文章目录简介算法分析和暴力法的区别重点和难点分析next数组如何求实战:实现strStr()(LeetCode第28题)题目描述示例代码参考简介KMP算法是一种字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹...

2019-05-06 14:31:26 554 4

原创 hexo个人博客收录谷歌

文章目录进入谷歌站点平台验证网站所有权使用HTML标记验证修改Next主题(v7.1.0)的配置文件配置head.swig文件通过验证生成站点地图安装sitemap插件修改博客配置文件提交谷歌站点地图等待谷歌收录参考进入谷歌站点平台先进入google站点平台,点击右上角的登录,如果还没有谷歌账号的要先注册一个谷歌账号。然后添加资源,这里选择网址前缀,输入博客首页,例如:https://mrfz...

2019-05-05 10:01:57 1437

原创 源码分析:Activity的启动过程(2)

文章目录ActivityStackSupervisor#realStartActivityLocked(以下源码都是基于API25)ActivityThread.ApplicationThread#scheduleLaunchActivityActivityThread.H#handleMessageActivityThread#handleLaunchActivityActivityThread...

2019-04-26 15:47:13 232

原创 源码分析:Activity的启动过程(1)

点击播放点击播放图标后,开始播放音乐,现在分析一下其具体流程首先看MainActivity.java @Override public void onClick(View v) { switch (v.getId()) { //....... case R.id.iv_main_play_and_pause: ...

2019-04-26 15:45:29 209

原创 kotlin中“==”和“===”的区别

code 1fun main(args: Array<String>) { val a : Int = 1000 println(a == a) //true println(a === a) //true val a1 : Int = a val a2 : Int = a println(a1 == a2) //tr...

2018-10-22 20:27:19 2026

原创 对于通过继承Thread类和实现Runnable接口这两种方式来创建线程的理解(含少量源码分析)

文章目录举例说明如何通过这两种方式创建线程继承Thread类创建线程类实现Runnable接口创建线程从源码角度分析以上两种方法继承Thread实现Runnable两种方式所带来的不同举例说明如何通过这两种方式创建线程继承Thread类创建线程类public class FirstThread extends Thread { int i = 0; //不同线程对象不能共享该成员变量 ...

2018-10-20 15:43:07 1132

原创 从源码看Dialog到底是属于应用Window还是属于子Window?

在看《Android开发艺术探索》的时候,

2018-10-15 16:14:19 2437 1

原创 ripple实现点击时的水波纹效果

文章目录前言实现的效果ripple的使用注意前言在看网易云音乐播放器的时候,觉得它在选择音乐时候的波纹效果很好看,就想要模仿这种效果。然后在网上找了一下这方面的文章,最后被我发现了ripple,用ripple就能很好地实现这种波纹效果。所以用这篇文章记录下ripple的实现,如果发现我的代码有问题,欢迎大家指出。实现的效果ripple的使用首先在res目录下新建一个drawable-v...

2018-10-14 16:05:58 1003

原创 从setContentView方法源码出发,弄懂Activity的视图是怎么附属在Window上的

Activity的视图是怎么附属在Window上的由于Activity的视图由setContentView方法提供,所以我们只需查看该方法即可。public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); initWindowDecorActio...

2018-10-13 14:01:25 217

原创 如何理解Shader以及Shader的子类怎么使用

文章目录如何理解shaderShader的子类BitmapShader如何理解shader先看一下官方解释:/** * Shader is the based class for objects that return horizontal spans of colors * during drawing. A subclass of Shader is installed in...

2018-10-12 12:09:25 689

空空如也

空空如也

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

TA关注的人

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