自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yjnull

分寸之间,便是大美!

  • 博客(63)
  • 资源 (1)
  • 收藏
  • 关注

原创 Activity 组件的启动流程

Activity 组件的启动过程当我们在 Launcher 中点击一个 app 时,发生了什么?1. 参与角色ActivityLauncherAMSInstrumentation:监控应用程序和系统之间的交互操作ActivityThread:ActivityThread 用来描述一个应用程序进程,系统每当启动一个应用程序进程时,都会在该进程里加载一个 ActivityThread ...

2020-04-23 00:05:41 318

原创 Android HTTPS 导读

Android HTTPS导读概述:在客户端和服务器之间协商出一套对称秘钥,每次发送信息之前将内容加密,收到之后解密,达到内容的加密传输。写这篇的目的,本来是想研究 Android 的签名机制,其中涉及到数字签名和数字证书,于是索性把 HTTPS 也研究下。本文主要是对其他文章的一个理解注释。对称加密非对称加密消息摘要数字签名数字证书以上这几个概念需要提前理解,可参考这几...

2019-10-12 18:58:17 201

原创 单调栈题解

单调栈题解1. 单调栈结构牛客链接方法:单调栈算法这里维护一个单调递增栈,可以找到比当前元素要小的元约定:当前元素 cur,栈顶元素 top,出栈的栈顶元素 tempTop遍历数组如果当前元素大于栈顶元素,则入栈(入栈元素索引,而不是值)否则,将栈顶元素出栈,此时,离 tempTop 左边最近且值比 tempTop 小的就是当前的栈顶元素 top,离 tempTop 右边最近且...

2019-09-25 13:35:56 283

原创 双端队列题解

双端队列题解1. 生成窗口最大值数组牛客链接LeetCode 链接方法一:暴力法该题最直接的解法,直接遍历每个滑动窗口,找到每个窗口的最大值即可。一共会有 N - k + 1 个滑动窗口,每个滑动窗口有 k 个元素,所以时间复杂度为 O(Nk),表现较差。方法二:双端队列这里采用 以双向链表实现的 LinkedList 作为双端队列。算法遍历整个数组。把当前元素的索引添加到双...

2019-09-25 10:55:38 352

原创 Map 系列 —— HashMap(JDK1.8)

Map 系列 —— HashMap(JDK1.8)1. Map 接口概述本文源码基于 JDK1.8Map 接口定义: 将 key 映射到 value 的一个对象。Map 不能包含重复的 key,每个 key 最多映射一个 value。Map 接口提供了三个集合视图,来表达 Map 的内容key 值的 set 集合value 值的 collection 集合key-value 映...

2019-09-19 13:23:07 639

翻译 Media session callbacks

Media session callbacksGitHub 链接译:https://developer.android.com/guide/topics/media-apps/audio-app/mediasession-callbacks你的 media session callbacks 调用多个 API 中的方法来控制播放器,管理音频焦点,以及与 media session 和 m...

2019-03-07 15:23:10 362

翻译 Building a media browser client

Building a media browser client(构建媒体浏览器客户端)GitHub 链接译:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowser-client要完成 client / server 设计,你必须构建一个 Activity 组件,它包含你...

2019-03-04 11:04:36 196

翻译 Building a media browser service

Building a media browser service(构建媒体浏览器服务)GitHub 链接译:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice你的应用必须在其 manifest 中声明 MediaBrowserService 并使用 i...

2019-03-02 10:24:07 650

原创 Android ButterKnife Zelezny 修改变量名前缀

Android ButterKnife Zelezny 这个插件相信不用介绍了。这里说几个注意点。右键 -> Generate 的时候请确保你的鼠标在你的 R.layout.xxx 布局文件上。要不然是不会出现 Generate Butterknife Injections 的。修改变量名。 默认变量是以布局 id 命名的,如果需要以 m 打头,需要在 Settings —> O...

2019-02-22 18:29:31 719

原创 Android 背景透明度

例:android:background="#A6000000" 表示 65% 的透明度。100% — FF95% — F290% — E685% — D980% — CC75% — BF70% — B365% — A660% — 9955% — 8C50% — 8045% — 7340% — 6635% — 5930% — 4D25% — 4020% — 33...

2019-02-21 16:21:35 2593

翻译 Audio app overview

Audio app overview音频应用程序的首选体系结构是 client/server 设计。player 及其 media session 在 MediaBrowserService 内实现,UI 和 media controller 与 MediaBrowser 一起存在于 Activity 中。MediaBrowserService 提供两个主要的功能:当你使用MediaBr...

2019-02-20 10:24:29 211

翻译 Using a media session

Using a media sessionGitHub 链接译:https://developer.android.com/guide/topics/media-apps/working-with-a-media-sessionmedia session 与其管理的 player 并存。您应该在拥有 media session 和它所关联的 player 的 Activity 或 Ser...

2019-02-18 10:21:57 185

翻译 Media app architecture overview

Media app architecture overviewGitHub 链接译:https://developer.android.com/guide/topics/media-apps/media-apps-overview本节介绍如何将 媒体播放应用 分割为 media controller(用于 UI)和 media session(用于实际播放)。它描述了两种媒体应用程序架...

2019-02-16 14:32:15 453

翻译 Supported media formats (支持的媒体格式)

Supported media formats (支持的媒体格式)译: https://developer.android.com/guide/topics/media/media-formatsmedia codec(媒体编解码器)container(容器)network protocol support(网络协议支持)本文档描述了 Android 平台提供的 media co...

2019-02-13 17:29:40 658

翻译 Audio & Video (音频 & 视频)

Audio & Video (音频 & 视频)译:https://developer.android.com/guide/topics/media/本节介绍用于处理音频和视频数据的核心 API,和用于录制和播放媒体文件的最常用的类。并且还说明了推荐的媒体应用架构。DocumentationSupported media formats 支持的媒体格式Media ap...

2019-02-13 17:24:43 347

原创 AndroidStudio Git 下的代码修改后颜色没变化

Android Studio 3.1.2在 AndroidStudio 中,被 Git 管理的代码在修改后,文件会有明显的颜色变化。 然而我的突然之间没变了,感觉很奇怪,而且困扰了我一两天了,所以在此记录解决方案。原因就我个人而言,应该是之前安装了一个插件 Material Theme UI 。感觉上是这个插件改变了我的一些默认配置,所以导致原本生效的颜色变化,给改没了,当然也可能是...

2018-09-13 18:47:40 5267 2

原创 十三、setContentView 流程

大概的流程梳理:

2018-08-22 18:01:32 161

原创 十二、Retrofit2 源码解析(绝对详细)

Retrofit2 源码解析注意: 本文是对源码的一个跟踪,会对每一行代码有具体的阐述,但是不会介绍 Retrofit 的设计模式。Retrofit:一个 Restful 设计风格的 HTTP 网络请求框架的封装。基于 OkHttp A type-safe HTTP client for Android and Java0. 基本使用1、Retrofit 将我们的 HTT...

2018-08-08 00:23:12 584

原创 十一、我所理解的 Socket

Socket 理解参考: 书籍《TCP / IP 协议族》 http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html0. 前言提起 Socket ,大家都说是什么 套接字、进程间通信、对 TCP / IP 协议进行封装的编程调用接口 balabala 的,说真的,刚接触的时候,真的是一脸...

2018-08-05 01:55:57 269

原创 十、EventBus 源码随想

EventBus 源码随想首先网上已经有不少优秀的EventBus的源码分析文章,这篇只是为了记录自己的理解,毕竟自己亲自写出来才能理解的更深,所以如有不对的地方,还望谅解。参考 https://www.jianshu.com/p/f057c460c77e http://p.codekk.com/blogs/detail/54cfab086c4761e5001b2538 https:...

2018-08-03 13:25:05 349

原创 九、Android 的线程和线程池

Android 的线程和线程池0. 几个概念在操作系统中,线程 是操作系统调度的最小单元,同时线程也是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都会有相应的开销。在 Android 中,从用途上来说,线程分为 主线程(又叫 UI 线程) 和 子线程(又叫工作线程),其中 主线程 主要处理和界面相关的事情,而 子线程 则往往用于执行耗时操作。1. Ha...

2018-08-01 20:57:45 264

原创 八、Android 热修复了解

Android 热修复0. 如何动态修复 bug1、下发补丁(内含修复号的 class)到用户手机,即让 app 从服务器上下载。(网络传输)2、app 通过某种方式,使补丁中的 class 被 app 调用(本地更新)这里的某种方式,特指 Android 的类加载器,通过类加载器加载这些修复好的 class,覆盖有问题的 class,理论上就能修复 bug 了。1....

2018-07-31 17:50:19 164

原创 七、Binder 机制初探

Binder 机制初探Read The Fucking Source Code由于初学 Binder 机制,所以 Binder 系列只是本人浅薄的理解,如有不正确的地方,还请指正。0. 准备工作首先问自己几个问题: - 为什么要跨进程通信(IPC)? (进程之间是不可以通信的吗) - 怎么做到跨进程通信? (怎样用常规的方式在两个进程之间进行通信呢) - 为什么是 B...

2018-07-30 00:05:03 352

原创 六、Android 消息机制

Android 消息机制从开发的角度来讲,Handler 是 Android 消息机制的上层接口。因此我们主要讨论的是 Handler 的运行机制。那么首先回答个问题,为什么要有 Handler 机制?0. 为什么要有 Handler 机制?回答这个问题,首先我们得知道 Handler 有什么作用。作用: Handler 的主要作用是将一个 任务 切换到 Handler 所...

2018-07-26 17:56:42 151

原创 五、Jvm系列(3)——类加载机制

五、Jvm系列(3)——类加载机制Java 与 C++ 之间有一堵由 内存动态分配和垃圾收集技术 所围成的 “高墙”,墙外面的人想进去,墙里面的人却想出来。类的生命周期如下: 上图是类的 生命周期。Java 虚拟机中 类加载 的全过程 是* 加载、验证、准备、解析 和 初始化* 这 5 个阶段所执行的具体动作。在这7个阶段中,加载、验证、准备、初始化和卸载 这5个阶段的顺序是确...

2018-07-25 19:27:09 190

原创 五、Jvm系列(2)——GC 相关

五、Jvm系列(2)——GC 相关Java 与 C++ 之间有一堵由 内存动态分配和垃圾收集技术 所围成的 “高墙”,墙外面的人想进去,墙里面的人却想出来。说起 垃圾收集(Garbage Collection, GC),我们需要思考 3件事情。 - 哪些内存需要回收? - 什么时候回收? - 如何回收?1. 哪些内存需要回收?程序计数器、虚拟机栈、本地方法栈 3个区域 ...

2018-07-24 22:54:38 159

原创 五、Jvm系列(1)——内存区域

五、Jvm系列(1)——内存区域1. Java 虚拟机运行时数据区域Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。2. 各区域解释详细模型图:2.1 程序计数器说明:程序计数器是一块较小的内存空间,它可以看作当前线程所执行的字节码的行号指示器。由于 Java 虚拟机的多线程是通过 线程 轮流切换 并 分配处理...

2018-07-24 22:50:37 159

原创 四、View 绘制流程——随想(2)

View 绘制流程如需详细了解,请看 [参考] 链接。1. measuremeasure 用于测量 view 的宽 / 高MeasureSpec 模式 具体描述 应用场景 备注 思考 UNSPECIFIED EXACTLY 子视图代下必须在父视图指定的确切尺寸内 match_parent 或 具体数值...

2018-07-21 20:38:59 164

原创 三、View 绘制流程 —— 基础(1)

View 绘制流程 —— 基础1. View分类 类别 解释 特点 单一视图 即一个View,如 TextView 不包含子View 视图组 即多个View组成的ViewGroup,如 LinearLayout 包含子View即视图View分为两类: View、ViewGroup2. View类简介View 类是...

2018-07-21 01:02:59 262

原创 二、View 事件分发机制

View 事件分发机制本文是自己看过一些资料后的总结,如要详细了解事件分发机制,请看[参考]内的文章。一、事件分发基础认知1.1 当我们再谈论事件分发时,到底再谈论什么?当用户触摸屏幕时,会产生点击事件 (Touch 事件) 而 Touch 事件的相关细节(发生触摸的位置、时间等)都被封装成了 MotionEvent 对象 所以当我们讨论事件分发时,实际是在讨论,是谁...

2018-07-20 00:21:21 189

原创 一. Activity 生命周期和启动模式

一. activity生命周期按照惯例,先上张 Activity 生命周期图回答一个问题: Activity是什么? Activity表示为具有用户界面的单一屏幕,可理解为”界面”。正常情况下,除了Window、Dialog和Toast,我们能见到的界面的确只有Activity。1.1 activity生命周期分析1.1.1 生命周期概述onCreate () 必...

2018-07-18 23:43:53 310

原创 Java 自动装箱( Autoboxing Q+A)

1.Q. How does autoboxing handle the following code fragment? (自动装箱怎样处理下面的代码片段 ? )Integer a = null;int b = a;A. It results in a run-time error. Primitive type can store every value of their c...

2018-06-11 16:29:37 203

原创 Java 重定向与管道

前言在学习 Sedgewick《算法4》 的第一章过程中,弥补了很多基础知识。在此做个简单的记录。重定向标准输入输出使我们能够利用许多操作系统都支持的命令行的扩展功能。只需要向启动程序的命令中加入一个简单的提示符,就可以将它的标准输入 重定向 至一个文件。文件的内容既可以永久保存,也可以作为另一个程序的输入,简单来说就是下面的例子:1. 提示符 “ > ”Rando...

2018-06-06 11:40:18 822

原创 RadioButton 右上角添加背景图,不需要自定义RadioGroup

实在想不出什么标题,所以用 BB 代替了,这样格式好看些而已 ~瞎BB1做项目时遇到一个效果图,由于是单选,所以用到了RadioButton,RadioButton 虽然有drawableLeft、drawableRight 等属性,但是没办法实现在左上角、右上角等角落加上图片吖,而且我只是需要选中时显示这个对勾而已,网上一大堆自定义RadioGroup是什么鬼,就加个图片而已,需要这么麻...

2018-05-29 15:12:28 1238

原创 Java设计模式——大家都很熟的单例模式

为什么尽管已经有很多介绍单例模式的文章了,但是还是需要自己亲自写一遍才知道,才能熟悉,所以动手写起来吧。直接上代码,解释都在注释里,只写了推荐的写法。package toOffer;public class Singleton { private Singleton(){} /** * 解法一: 双重校验锁 * instance声明...

2018-05-18 18:50:05 179

原创 java.lang.RuntimeException: Unable to get provider cn.jpush.android.service.DataProvider

Android Studio 3.1.2 报错:java.lang.RuntimeException: Unable to get provider cn.jpush.android.service.DataProvider: java.lang.ClassNotFoundException: Didn’t find class “cn.jpush.android.service.DataP...

2018-05-17 18:39:13 4619

转载 报错Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)'

报错原因:Caused by: android.view.InflateException: Binary XML file line #0: Attempt to invoke virtual method ‘boolean java.lang.String.equals(java.lang.Object)’ on a null object reference虽然知道是 xml 出错了...

2018-04-30 16:26:01 2388

原创 LeetCode 34. Search for a Range

34. Search for a Range原题: Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.Your algorithm’s runtime complexity must be in th...

2018-04-26 22:47:34 219

原创 JVM 垃圾收集器参数总结

JVM垃圾收集器参数总结表 1-1 垃圾收集相关的常用参数 参数 描述 UseSerialGC 虚拟机运行在Client模式下的默认值,打开此开关后,使用 Serial+Serial Old 的收集器组合进行内存回收 UseParNewGC 打开此开关后,使用 ParNew + Serial Old 的收集器组合进行内存回收 UseCo...

2018-04-26 13:17:27 412

原创 UML 类图

UML类图图示法简单了解继承:空心三角形 + 实线实现接口:空心三角形 + 虚线关联:实线箭头 (持有引用,企鹅知道气候的变化,企鹅与气候关联)依赖:虚线箭头 (作为参数传递,动物依赖于氧气和水) A 类是 B 类中的(某种方法的)局部变量;A 类是 B 类方法当中的一个参数A 类向 B 类发送消息,从而影响 B 类发生变化(如静态方法的调用)聚合:空心的菱形 + 实线箭头 (...

2018-04-25 15:10:17 162

HeadFirst设计模式源码

HeadFirst设计模式源码下载

2017-07-19

空空如也

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

TA关注的人

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