<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[一名互联网时代苟且偷生的 Android码农]]></title><description><![CDATA[Android漫漫路，码农与你同在。]]></description><link>https://blog.csdn.net/jaynm</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; jaynm]]></copyright><item><title><![CDATA[Android 开发必备技能：解决 Android Studio 模拟器无法连接网络问题]]></title><link>https://blog.csdn.net/jaynm/article/details/116787547</link><guid>https://blog.csdn.net/jaynm/article/details/116787547</guid><author>jaynm</author><pubDate>Fri, 14 May 2021 13:09:16 +0800</pubDate><description><![CDATA[新版 Android 模拟器联网的解决办法： 通过命令行启动模拟器，配置你想要设置的DNS地址即可。具体步骤如下：

ipconfig /all查看本机DNS
打开SDK目录进入emulator文件夹，在此处打开Powershell窗口（Windows 10下shift+右键选择 ）
输入命令 .\emulator -avd 模拟器名 -dns-server 你自己的DNS地址


模拟器启动后浏览器打开 www.baidu.com 验证联网是否成功！

...]]></description><category></category></item><item><title><![CDATA[征服面试官：Binder 原理篇 掌握这篇面试题汇总，吊打面试官！]]></title><link>https://blog.csdn.net/jaynm/article/details/116787353</link><guid>https://blog.csdn.net/jaynm/article/details/116787353</guid><author>jaynm</author><pubDate>Fri, 14 May 2021 12:55:50 +0800</pubDate><description><![CDATA[Binder 是 Android 中的一种跨进程通信方式。从 Android Framework 角度来说 Binder 是 ServiceManager 连接各种 Manager(ActivityManager、WindowManager 等等)和相应 ManagerService 的桥梁；从 Android 应用层来说 Binder 是客服端与服务端进行通信的媒介。
1、什么是 Binder？

直观来说，Binder 是 Android 中的一个类，它继承了 IBinder 接口
从 IPC 角度来说]]></description><category></category></item><item><title><![CDATA[征服面试官：Handler 原理篇 掌握这篇面试题汇总，吊打面试官！]]></title><link>https://blog.csdn.net/jaynm/article/details/115376656</link><guid>https://blog.csdn.net/jaynm/article/details/115376656</guid><author>jaynm</author><pubDate>Thu, 01 Apr 2021 16:07:37 +0800</pubDate><description><![CDATA[1、Handler 实现机制
Handler 机制有几个核心类：Handler、Looper、Message、MessageQueue。Handler 机制是一个典型的生产者消费者模式——多个生产者，一个消费者，该模式是处理线程安全的一个经典模式

Message

Message 是 Handler 接收和处理的消息对象，内部使用链表数据结构实现一个消息池，用于重复利用，
避免大量创建消息对象，造成内存浪费。用于在不同线程之间交换数据。

Handler

主要用来发送和处理消息。发送消息一般是使用 Ha]]></description><category></category></item><item><title><![CDATA[征服面试官：OkHttp 原理篇 掌握这篇面试题汇总，吊打面试官！]]></title><link>https://blog.csdn.net/jaynm/article/details/112002901</link><guid>https://blog.csdn.net/jaynm/article/details/112002901</guid><author>jaynm</author><pubDate>Thu, 31 Dec 2020 09:48:40 +0800</pubDate><description><![CDATA[前言
如今面试中高级开发工程师岗位，OKhttp 原理是必问环节，只会使用已经无法满足 Android 开发市场的需求，优秀的第三方框架源码剖析不仅能深度理解框架，也能对自己学习带来很大的帮助。
本篇文章根据朋友反馈和亲身经历简单整理的一些关于 Okhttp 常见面试题目。
1.Okhttp 基本实现原理
OkHttp 主要是通过 5 个拦截器和 3 个双端队列（2 个异步队列，1 个同步队列）工作。内部实现通过一个责任链模式完成，将网络请求的各个阶段封装到各个链条中，实现了各层的解耦。
OkHttp 的底]]></description><category></category></item><item><title><![CDATA[征服面试官：RxJava 原理篇 掌握这篇面试题汇总，吊打面试官！]]></title><link>https://blog.csdn.net/jaynm/article/details/109813016</link><guid>https://blog.csdn.net/jaynm/article/details/109813016</guid><author>jaynm</author><pubDate>Thu, 19 Nov 2020 15:23:55 +0800</pubDate><description><![CDATA[1、RxJava 如何实现线程切换？
subscribeOn 是通过新建 Observable 的方式，使用 OnSubscribe 类的方式去做到线程切换的。
observeOn 是通过 operator 操作符的形式去完成线程切换的，所以他的作用域和其他操作符一样，是调用 observeOn 之后的链路。

Schedulers.io() 代表 io 操作的线程, 通常用于网络,读写文件等 io 密集型的操作
Schedulers.computation() 代表 CPU 计算密集型的操作, 例如需要大]]></description><category></category></item><item><title><![CDATA[征服面试官：Retrofit 原理篇 掌握这篇面试题汇总，吊打面试官！]]></title><link>https://blog.csdn.net/jaynm/article/details/108614788</link><guid>https://blog.csdn.net/jaynm/article/details/108614788</guid><author>jaynm</author><pubDate>Wed, 16 Sep 2020 09:16:17 +0800</pubDate><description><![CDATA[1、Retrofit 实现原理
Retrofit 通过 java 接口以及注解来描述网络请求，并用动态代理的方式生成网络请求的 request，然后通过 client 调用相应的网络框架（默认 okhttp）去发起网络请求，并将返回的 response 通过 converterFactorty 转换成相应的数据 model，最后通过 calladapter 转换成其他数据方式（如 rxjava Observable）

通过 Retrofit. create( ciass)方法创建出 Service int]]></description><category></category></item><item><title><![CDATA[征服面试官：Java 虚拟机（JVM）掌握这篇面试题汇总，吊打面试官！]]></title><link>https://blog.csdn.net/jaynm/article/details/107854707</link><guid>https://blog.csdn.net/jaynm/article/details/107854707</guid><author>jaynm</author><pubDate>Fri, 07 Aug 2020 09:12:45 +0800</pubDate><description><![CDATA[1、简述 JVM 垃圾回收机制
在 JVM 中，有一个垃圾回收线程，它是低优先级的，在正常情况下是不会执行的，只有在虚拟机空闲或者当前堆内存不足时，才会触发执行，扫描那些没有被任何引用的对象，并将它们添加到要回收的集合中，进行回收。
2、JVM 的内存结构


Java 堆（Heap） 是 Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域，在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例，几乎所有的对象实例都在这里分配内存。
方法区（Method Area） 方法]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 CoordinatorLayout + CollapsingToolbarLayout 开发详解]]></title><link>https://blog.csdn.net/jaynm/article/details/107640690</link><guid>https://blog.csdn.net/jaynm/article/details/107640690</guid><author>jaynm</author><pubDate>Tue, 28 Jul 2020 17:15:44 +0800</pubDate><description><![CDATA[前言
CoordinatorLayout 遵循 Material 风格，结合 AppbarLayout, CollapsingToolbarLayout 等可产生各种炫酷的效果，本篇博客就将介绍 CoordinatorLayout 的各种酷炫效果。

一、View 介绍
1、CoordinatorLayout
又名协调者布局，它是 support.design 包中的控件。简单来说，CoordinatorLayout 是用来协调其子 view 并以触摸影响布局的形式产生动画效果的一个 super-power]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 BottomNavigationView + ViewPager + Fragment + BadgeView 开发详解]]></title><link>https://blog.csdn.net/jaynm/article/details/107321326</link><guid>https://blog.csdn.net/jaynm/article/details/107321326</guid><author>jaynm</author><pubDate>Mon, 13 Jul 2020 17:27:40 +0800</pubDate><description><![CDATA[前言
BottomNavigationView 是 Material Design 提供的一个标准底部导航栏的实现，可以轻松的实现导航栏菜单之间的切换与浏览。底部导航使用户更方便的查看和切换最高层级的导航界面，适用于有三到五个 Tab 的情况。
APP 底部导航栏目中，有新消息提示用户，并在导航栏底部显示具体消息数，这种效果主流 APP 都有应用。本文就介绍 BottomNavigationView + ViewPager + Fragment + BadgeView 可以达到微信消息角标效果和 QQ 消息]]></description><category></category></item><item><title><![CDATA[老生常谈之 Retrofit 面试看这一篇就够了]]></title><link>https://blog.csdn.net/jaynm/article/details/107183671</link><guid>https://blog.csdn.net/jaynm/article/details/107183671</guid><author>jaynm</author><pubDate>Tue, 07 Jul 2020 16:09:29 +0800</pubDate><description><![CDATA[一、前言
Retrofit 就是一个网络请求框架的封装，底层的网络请求默认使用的 Okhttp，本身只是简化了用户网络请求的参数配置等，还能与 Rxjava 相结合，使用起来更加简洁方便。
从使用方法出发，首先是怎么使用，其次是我们使用的功能在内部是如何实现的，实现方案上有什么技巧，有什么范式。全文基本上是对 Retrofit 源码的一个分析与导读，非常建议大家下载 Retrofit 源码之后，跟着本文，过一遍源码。
二、基本用例
2.1 创建 Retrofit 对象
Retrofit retrofit =]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 SearchView + Toolbar 开发详解]]></title><link>https://blog.csdn.net/jaynm/article/details/107172544</link><guid>https://blog.csdn.net/jaynm/article/details/107172544</guid><author>jaynm</author><pubDate>Tue, 07 Jul 2020 06:41:38 +0800</pubDate><description><![CDATA[前言
SearchView 是 Android 原生的搜索框控件，它提供了一个用户界面，可以让用户在文本框内输入文字，并允许通过看监听器监控用户输入，当用户输入完成后提交搜索时，也可通过监听器执行实际的搜索。

一、常见属性




相关方法
解释说明




setIconifiedByDefault(boolean)
设置该搜索框默认是否自动缩小为图标


setImeOptions(int)
设置输入法搜索选项字段，默认是搜索，可以是：下一页、发送、完成等


setInputType(int)
设置]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 Palette 开发详解]]></title><link>https://blog.csdn.net/jaynm/article/details/107076754</link><guid>https://blog.csdn.net/jaynm/article/details/107076754</guid><author>jaynm</author><pubDate>Thu, 02 Jul 2020 09:07:17 +0800</pubDate><description><![CDATA[前言
Palette 是 Android L SDK 中的新特性，可以使用 Palette 从图像中提取出突出的颜色（主色调），获取到颜色之后我们再将这个颜色值赋给 ActionBar、状态栏等。从而达到界面色调的统一，使界面美观协调。

Palette 原理：通过得到一个 bitmap，通过方法进行分析，取出 LightVibrantSwatch，DarkVibrantSwatch，LightMutedSwatch，DarkMutedSwatch 这些样本，然后得到 rgb 值。


一、Palette ]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 CardView 开发详解]]></title><link>https://blog.csdn.net/jaynm/article/details/107028628</link><guid>https://blog.csdn.net/jaynm/article/details/107028628</guid><author>jaynm</author><pubDate>Mon, 29 Jun 2020 23:23:30 +0800</pubDate><description><![CDATA[前言
Android 5.0 版本中新增了 CardView，CardView 继承自 FrameLayout 类，具有圆角背景和阴影的 FrameLayout，并且可以设置圆角和阴影，使得控件具有立体性，也可以包含其他的布局容器和控件。
本文章向大家介绍 Android CardView 详解及使用方法和实例，主要包括 Android CardView 详解及使用方法和实例使用实例、应用技巧、基本知识点总结和需要注意事项。

一、CardView 常用属性




XML 属性
方法
介绍




app]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 DrawerLayout + NavigationView 使用详解]]></title><link>https://blog.csdn.net/jaynm/article/details/106940926</link><guid>https://blog.csdn.net/jaynm/article/details/106940926</guid><author>jaynm</author><pubDate>Thu, 25 Jun 2020 06:14:37 +0800</pubDate><description><![CDATA[前言
DrawerLayout 是 Support Library 包中实现了侧滑菜单效果的控件，可以说 DrawerLayout 是因为第三方控件如 MenuDrawer 等的出现之后，google 借鉴而出现的产物。DrawerLayout 分为侧边菜单和主内容区两部分，侧边菜单可以根据手势展开与隐藏（DrawerLayout 自身特性），主内容区的内容可以随着菜单的点击而变化。

一、DrawerLayout 基础使用
DrawerLayout 其实是一个布局控件，继承 ViewGroup，与 Lin]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 TextInputLayout 使用详解]]></title><link>https://blog.csdn.net/jaynm/article/details/106918713</link><guid>https://blog.csdn.net/jaynm/article/details/106918713</guid><author>jaynm</author><pubDate>Tue, 23 Jun 2020 11:07:04 +0800</pubDate><description><![CDATA[前言
本文是 Material Design 系列第四篇：TextInputLayout 主要是作为 EditText 的容器，从而为 EditText 生成一个浮动的 Label，当用户点击 EditText 的时候，EditText 中的 hint 字符串会自动移到 EditText 的左上角。
TextInputLayout 的简单使用，是 Google 推出的整个 Material Design 库的一个缩影：Google 将 UI 视觉效果设计得华丽且流畅，同时代码封装更为优雅，开发者只需要在 l]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 TabLayout + ViewPager + Fragment 使用详解]]></title><link>https://blog.csdn.net/jaynm/article/details/106867163</link><guid>https://blog.csdn.net/jaynm/article/details/106867163</guid><author>jaynm</author><pubDate>Sat, 20 Jun 2020 07:29:21 +0800</pubDate><description><![CDATA[前言
本文是 Material Design 系列第三篇：TabLayout + ViewPager + Fragment 基本使用，Material Design 所有控件属于高级 UI，所以 Material Design 控件是中高级工程师必备技能。现在市面上很多主流界面效果都是采用 Material Design 风格控件完成。希望博主 Material Design 系列文章对各位初学者有所帮助，也为自己学习做详细笔记。

一、TabLayout 方法介绍
1、addTab（TabLayout.T]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 Snackbar 使用详解]]></title><link>https://blog.csdn.net/jaynm/article/details/106825681</link><guid>https://blog.csdn.net/jaynm/article/details/106825681</guid><author>jaynm</author><pubDate>Thu, 18 Jun 2020 10:56:37 +0800</pubDate><description><![CDATA[前言
本文是 Material Design 系列第三篇：SnackBar 的提出实际上介于 Toast 和 Dialog 的中间产物，SnackBar 提供有关操作的轻量级反馈，它们在移动设备的屏幕底部显示一条简短消息。SnackBar 出现在屏幕上所有其他元素的上方，一次只能显示一个。
它们在超时后或在屏幕上其他位置的用户交互之后自动消失，特别是在召唤新的表面或活动的交互之后。
Snackbar 与 Toast 的主要区别是：Snackbar 可以滑动退出，也可以处理用户交互（点击）事件。

一、Sna]]></description><category></category></item><item><title><![CDATA[Android Material Design 系列之 Toolbar 使用详解]]></title><link>https://blog.csdn.net/jaynm/article/details/106727790</link><guid>https://blog.csdn.net/jaynm/article/details/106727790</guid><author>jaynm</author><pubDate>Mon, 15 Jun 2020 06:18:29 +0800</pubDate><description><![CDATA[前言
在 2014 年 Google IO 大会上，Google 推出了一套全新的设计规范 Material Design,这也为广大的 Android 开发者带来了福音，不用像以前一样照着 IOS 视觉稿来开发 Android APP，Material Design 的视觉风格本身就比较炫酷。
而 Google 也为我们提供符合 Material Design 风格的一系列组件，这大大的提高了我们的开发效率。由于 APP 改版在做 Material Design 化，所以后面会结合项目中的使用情况写几篇关]]></description><category></category></item><item><title><![CDATA[灵魂拷问：你要做一辈子程序员吗？]]></title><link>https://blog.csdn.net/jaynm/article/details/106707812</link><guid>https://blog.csdn.net/jaynm/article/details/106707812</guid><author>jaynm</author><pubDate>Fri, 12 Jun 2020 08:31:08 +0800</pubDate><description><![CDATA[前言
一个程序员看待职业的方式，决定了他能走多远。
有的人把职业当游戏，不论 buff 还是 bug 都要闯过去；有的人把职业当对手，不是一心想赢，只是不想输。
最近总有人讨论职业规划这个问题，好的职业规划对程序员的职业生涯非常重要，今天我们就来聊聊程序员的职业规划。

01、为什么程序员职业规划很重要？
相信每个人身体里都有某种特质，这种特质让你在某个领域取得成就的可能性远远大于其他，这种特质也能让你异于他人。
但是，我们并非生来就知道自己擅长干什么的，经历长时间的迷茫期才知道自己擅长干什么，然后去做自己]]></description><category></category></item><item><title><![CDATA[Android Material Design Icon Genenerator 插件为个人开发者提供 Icon 图标大全]]></title><link>https://blog.csdn.net/jaynm/article/details/106682421</link><guid>https://blog.csdn.net/jaynm/article/details/106682421</guid><author>jaynm</author><pubDate>Thu, 11 Jun 2020 10:19:25 +0800</pubDate><description><![CDATA[前言
如果你作为个人开发者，没有美工小姐姐的情况下，项目中的图标 icon 很是苦恼。之前用过阿里巴巴图标库 Iconfont，后来发现 Android studio 中有一个很牛逼的 icon 插件[Android Material design icon Genenerator]，轻松生成自己需要的 icon，而且还是 Vector 矢量图。
一、插件介绍
1、先看下官方定义：

Android Studio &amp; IntelliJ Plugin for Material Design Icon.]]></description><category></category></item></channel></rss>