Android进阶
文章平均质量分 92
刘望舒
腾讯最具价值专家,Android进阶书畅销前三: 《Android进阶指北》《Android进阶解密》《Android进阶之光》 作者 ,连续5年蝉联电子工业出版社年度优秀作者。国内首批Android开发者,10多年开发经验,前华为架构师、独角兽公司技术总监。国内唯一被百度百科收录的Android技术专家,谷歌开发者社区、Droidcon等技术大会特邀讲师,CSDN 2018年度十大博客之星。
展开
-
进阶三部曲第一部《Android进阶之光》第2版已出版
本文首发于微信公众号「刘望舒」其实《Android进阶之光》第二版已经在2021年10月就出版了,但是今天才发现,我去,没在掘金发文,今天补上~~ 以下是正文其实不打算出《Android进阶之光》第二版的,起初觉得意义不大,但是看到现在仍旧有很多人看《Android进阶之光》第一版,而里面的内容又有点过时了。还有一个原因是Android进阶三部曲摆在书架上,《Android进阶之光》就显得特别的突兀,也有很多读者也跟我一样的感觉,说强迫症犯了,一看摆在书架上的书高低不同就很难受。因此《Android.原创 2022-02-15 11:31:08 · 6071 阅读 · 5 评论 -
都2021年了,是时候安装Ubuntu了!
本文首发于微信公众号「刘望舒」这是BATcoder的第三篇,BATcoder是Android进阶三部曲的番外篇,会对Android进阶三部曲的内容进行拓展和升级,会以视频的形式分享给大家。至于为啥叫BATcoder,这是因为我希望大家看了我的技术视频能进入自己中意的大厂。本文应该是我最近几年写过最简单的文章了,但是只要能帮助一些人,那就是有用的。在Android进阶三部曲第二部《Android进阶解密》的第一章,我介绍了两种阅读源码的方式,其中一种是从百度网盘:https://pan.baidu..原创 2021-04-26 05:14:38 · 2447 阅读 · 3 评论 -
Android开发如何高效学习系统底层原理
本文首发于微信公众号「刘望舒」大家好,我是刘望舒,I’m back!最近分享了一些视频,都属于望舒杂谈,望舒杂谈会分享一些经验,什么都会聊。除了望舒杂谈还有另一个视频分支叫做BATcoder,什么是BATcoder呢?它是Android进阶三部曲的番外篇,会对Android进阶三部曲的内容进行拓展和升级,会以视频的形式分享给大家。至于为啥叫BATcoder,这是因为我希望大家看了我的技术视频能进入自己中意的大厂。这篇是BATcoder的第二个视频,来聊聊应用开发如何高效学习系统叠层源码,注意是给应用.原创 2021-04-06 11:20:14 · 2426 阅读 · 3 评论 -
寒冬已至!视频聊聊四面楚歌的Android工程师该何去何从?
大家好,我是刘望舒,I’m back!最近分享了一些视频,都属于望舒杂谈,望舒杂谈会分享一些经验,什么都会聊。除了望舒杂谈还有另一个视频分支叫做BATcoder,什么是BATcoder呢?它是Android进阶三部曲的番外篇,会对Android进阶三部曲的内容进行拓展和升级,会以视频的形式分享给大家。至于为啥叫BATcoder,这是因为我希望大家看了我的技术视频能进入自己中意的大厂。这篇是BATcoder的第一个视频,不过这次不会分享技术,而是和大家聊聊Android工程师该何去何从。视频版本视频版本:原创 2020-11-30 07:26:07 · 2076 阅读 · 2 评论 -
Android进阶三部曲第三部《Android进阶指北》已出版
大家久等了,这本书的出版简直是太艰辛了,从2018年6月开始写,2020年1月完稿,直到2020年9月才出版,从开始写到出版耗时2年多啊,具体原因不想说了,都是泪啊,要不今年4月就出版了。这本书是Android进阶三部曲的第三部,书名叫《Android进阶指北》,内容算是对前两本的补充。其实我一直想在书中建立一个知识体系,但是凭借进阶之光和进阶解密是形成不了成规模的知识体系的,而进阶指北的出版将会打破这一点,三本书初步形成了知识体系,即Android进阶三部曲知识体系。我在进阶指北中的开头加入了序章,就叫原创 2020-09-22 21:18:45 · 5069 阅读 · 9 评论 -
腾讯面试官:了解Java Binder中的系统服务吗?
本文首发于微信公众号「后厂技术官」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系列...原创 2020-03-30 23:01:15 · 1858 阅读 · 1 评论 -
腾讯面试官:Binder的系统服务是如何获取的?
本文首发于微信公众号「后厂村码农」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系列...原创 2020-02-26 01:00:10 · 1540 阅读 · 0 评论 -
Android Binder原理(四)ServiceManager的启动过程
本文首发于微信公众号「后厂技术官」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系...原创 2020-02-07 04:01:34 · 1856 阅读 · 0 评论 -
Android Binder原理(三)系统服务的注册过程
关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系列本文首发于微信公众号「后厂技术官」...原创 2020-02-07 03:58:32 · 2019 阅读 · 0 评论 -
Android Binder原理(二)ServiceManager中的Binder机制
本文首发于微信公众号「后厂技术官」前言在上一篇文章中,我们了解了学习Binder前必须要了解的知识点,其中有一点就是Binder机制的三个部分:Java Binder、Native Binder、Kernel Binder,其中Java Binder和Native Binder都是应用开发需要掌握的。Java Binder是需要借助Native Binder来工作的,因此需要先了解Nat...原创 2020-01-12 18:33:46 · 1945 阅读 · 2 评论 -
Android Jetpack架构组件(六)一文带你了解ViewModel的使用和原理
本文首发于微信公众号「后厂技术官」前言在本系列的第4和第5篇文章中,介绍了LiveData的使用和原理,LiveData和ViewModel是一对好搭档,这篇文章我们一起来学习什么是ViewModel、ViewModel基本使用、ViewModel的原理。1.什么是ViewModel在说ViewModel前,我们需要解一下MVVM和DataBinding,在Android进阶三部曲第...原创 2020-01-12 18:24:10 · 2454 阅读 · 3 评论 -
Android Jetpack架构组件(五)带你了解LiveData(原理篇)
本文首发于微信公众号「后厂技术官」前言在上一篇文章中我们学习了LiveData的基本用法,我们知道LiveData是一个可观察的数据持有者,他是具有组件生命周期感知的,那么它是如何观察组件生命周期变化的呢?LiveData和RxJava的不同的是,LiveData并不是通知所有观察者,它只会通知处于Active状态的观察者,如果一个观察者处于DESTROYED状态,它将不会收到通知,这...原创 2020-01-12 17:51:35 · 1151 阅读 · 0 评论 -
Android Jetpack架构组件(四)一文带你了解LiveData(使用篇)
本文首发于微信公众号「后厂村码农」前言在2017年前后,RxJava一直很火,我在Android进阶三部曲第一部《Android进阶之光》中就介绍了RxJava的使用和原理。谷歌推出的LiveData和RxJava类似,也是基于观察者,你可以认为LiveData是轻量级的RxJava。起初LiveData并不被看好,随着谷歌的大力推广,LiveData也慢慢的进入了大家的视野。一般来说,...原创 2019-11-20 08:01:11 · 1637 阅读 · 1 评论 -
Android Jetpack架构组件(三)一文带你了解Lifecycle(原理篇)
本文首发于微信公众号「后厂村码农」前言在上一篇文章中,我们学习了如何去使用Lifecycle,当然之会使用是不够的,还需要了解它的原理,这是成为优秀工程师必备的。这篇文章就来学习Lifecycle的基本原理。1.Lifecycle的生命周期状态事件和状态Lifecycle使用两个枚举来跟踪其关联组件的生命周期状态,这两个枚举分别是Event和State。State指的是Lifecy...原创 2019-11-20 07:59:52 · 2375 阅读 · 1 评论 -
Android Gradle (二)签名配置和依赖管理
本文首发于微信公众号「后厂村码农」相关文章Gradle核心思想(一)为什么现在要用Gradle?Gradle核心思想(二)Gradle入门前奏Gradle核心思想(三)Groovy快速入门指南Gradle核心思想(四)看似无用,实则重要的Gradle WrapperGradle核心思想(五)通俗易懂的Gradle插件讲解Gradle核心思想(六)自定义Gradle插件的三种方式...原创 2019-10-29 07:40:07 · 1494 阅读 · 0 评论 -
Android Jetpack架构组件(二)一文带你了解Lifecycle(使用篇)
本文首发于微信公众号「后厂村码农」前言在上一篇文章中,我们基本了解了什么是Android Jetpack,这一篇文章来介绍Android Jetpack架构组件的Lifecycle,Lifecycle用于帮助开发者管理Activity和Fragment 的生命周期,由于Lifecycle是LiveData和ViewModel的基础,所以需要先学习它。1.为什么需要Lifecycle在...原创 2019-10-29 06:39:50 · 2161 阅读 · 0 评论 -
Android Binder原理(一)学习Binder前必须要了解的知识点
本文首发于微信公众号「后厂村码农」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系...原创 2019-10-24 00:29:41 · 2980 阅读 · 2 评论 -
Android Jetpack架构组件(一)带你了解Android Jetpack
本文首发于微信公众号「后厂村码农」前言Android已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的...原创 2019-10-24 00:27:58 · 6806 阅读 · 0 评论 -
Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
此文的代码在 Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果代码的基础上进行修改,如果你没有看过本系列的第一篇文章最好先看一看。原创 2016-01-16 00:20:44 · 19733 阅读 · 14 评论 -
Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用
在上一篇文章Android IPC机制(二)用Messenger进行进程间通信中我们介绍了使用Messenger来进行进程间通信的方法,但是我们能发现Messenger是以串行的方式来处理客户端发来的信息,如果有大量的消息发到服务端,服务端仍然一个一个的处理再响应客户端显然是不合适的。另外,Messenger用来进程间进行数据传递但是却不能满足跨进程的方法调用,接下来我们来使用AIDL来实现跨进程方原创 2016-01-09 16:51:02 · 11264 阅读 · 1 评论 -
Android IPC机制(二)用Messenger进行进程间通信
本来想写Binder的,笔者很多年前研究Android Native Framework时才了解到的,实话说对应用层的开发帮助不大,网上文章也比较多,如果想了解可以参考Android Bander设计与实现 - 设计篇这篇文章。另外在看这篇文章前最好看一下本文章的前篇Android IPC机制(一)开启多进程。首先我们先写服务端(MessengerService.java),在onBind方法原创 2016-01-03 11:53:14 · 7411 阅读 · 9 评论 -
Android IPC机制(一)开启多进程
1. 为何要开启多进程 为何开启android应用要开启多进程,主要有以下几点:单进程所分配的内存不够,需要更多的内存。在早期android系统只为一个单进程的应用分配了16M的可用内存,随着手机的硬件的提升和android系统的改进,虽然可分配内存越来越多,但仍旧可以通过开启多进程来获取更多的内存来处理自己App的业务独立运行的组件,比如个推,它的服务会另开一个进程。2. 开启多进程 首原创 2016-01-02 13:44:49 · 16455 阅读 · 9 评论 -
Android Design Support Library(二)用NavigationView实现抽屉菜单界面
NavigationView在MD设计中非常重要,之前Google也提出了使用DrawerLayout来实现导航抽屉。这次,在Android Design Support Library中,Google提供了NavigationView来实现导航菜单界面。这次我们写的代码在Android用TabLayout实现类似网易选项卡动态滑动效果这篇文章代码的基础上进行修改,所以最好先看看上面这篇文章原创 2016-01-01 15:52:05 · 8439 阅读 · 0 评论 -
Android选项卡动态滑动效果
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent原创 2015-12-20 14:03:38 · 14577 阅读 · 17 评论 -
Android5.x Toolbar和Palette应用解析
对于已经被不大好用的Actionbar折磨的开发者来说,Toolbar的出现确实是一个好消息,Toolbar是应用的内容的标准工具栏,可以说是Actionbar的升级版,两者不是独立关系,要使用Toolbar还是得跟ActionBar有关系的。相比Actionbar Toolbar最明显的一点就是变得很自由,可随处放置,具体的使用方法和Actionbar很类似。1. 引入Toolbar 由于用的a原创 2015-12-07 09:59:42 · 4638 阅读 · 4 评论 -
Android 实现广告Banner循环轮播
做了很多的App,发现广告Banner非常的常用,在这里就总结一下我的做法,先看看一个应用的广告Banner 1. ViewPager中展示和下载图片下面我们来实现一个类似的广告Banner,主布局界面<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/ap原创 2015-12-05 14:01:01 · 12193 阅读 · 3 评论 -
Android5.x CardView 应用解析
android 5.0版本中新增了CardView, CardView继承自FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。也可以布局其他View。 如果sdk低于5.0我们仍旧要引入v7包,我用的是android studio所以我们需要在build.gradle加入如下代码用来自动导入support-v7包,记得配置完后重新Build一下工程。depend原创 2015-12-03 11:19:51 · 5936 阅读 · 7 评论 -
Android5.x RecyclerView 应用解析
有了ListView、GridView为什么还需要RecyclerView这样的控件呢?整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,更高的效率,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现更加丰富多样效果。 但是RecyclerView也有缺点和让人头疼的地方:设置列表的分割线时需要自定义,原创 2015-12-02 21:12:36 · 9668 阅读 · 0 评论 -
Android多线程(一)线程池
1. new Thread new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 这是最基本的开启线程的方式(实现Runnable接口),我们在初学安卓或者原创 2015-04-09 08:53:54 · 12020 阅读 · 2 评论 -
Android多线程(二)AsyncTask源码分析
AsyncTask的基本用法这里就不在赘述了,基本是个安卓开发者就会。1.android 3.0以前的 AsyncTaskprivate static final int CORE_POOL_SIZE = 5; private static final int MAXIMUM_POOL_SIZE = 128; private static final int KEEP_AL原创 2015-04-14 18:45:33 · 4459 阅读 · 0 评论 -
Android IPC机制(五)用Socket实现跨进程聊天程序
Socket也称作“套接字“,是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。它分为流式套接字和数据包套接字,分别对应网络传输控制层的TCP和UDP协议。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。它使用三次握手协议建立连接,并且提供了超时重传机制,具有很高的稳定性。UDP协议则是是一种无连接的协议,且不对传送数据包进行可靠性原创 2016-02-20 16:58:04 · 5838 阅读 · 4 评论 -
Android View体系(一)视图坐标系
Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。原创 2016-02-23 19:25:28 · 30222 阅读 · 27 评论 -
Android网络编程(二)HttpClient与HttpURLConnection
上一篇我们了解了HTTP协议原理,这一篇我们来讲讲Apache的HttpClient和Java的HttpURLConnection,这两种都是我们平常请求网络会用到的。无论我们是自己封装的网络请求类还是第三方的网络请求框架都离不开这两个类库。原创 2016-04-02 11:46:00 · 15544 阅读 · 18 评论 -
Android View体系(七)从源码解析View的measure流程
在上一篇我们了解了Activity的构成后,开始了解一下View的工作流程,就是measure、layout和draw。measure用来测量View的宽高,layout用来确定View的位置,draw则用来绘制View。这一讲我们来看看measure流程,measure流程分为View的measure流程和ViewGroup的measure流程,只不过ViewGroup的measure流程除了要完成自己的测量还要遍原创 2016-03-21 15:47:11 · 8645 阅读 · 7 评论 -
Android网络编程(三)Volley用法全解析
Volley想必很多人都用过,为了建立网络编程的知识体系,Volley是必须要讲的知识点,所以我这里有必要再次介绍一下Volley的使用。原创 2016-04-04 13:01:40 · 21164 阅读 · 20 评论 -
Android View体系(八)从源码解析View的layout和draw流程
上一篇文章我们讲了View的measure的流程,接下来我们讲下View的layout和draw流程,如果你理解了View的measure的流程,那这篇文章自然就不在话下了。原创 2016-03-25 17:31:15 · 6527 阅读 · 2 评论 -
Android View体系(四)从源码解析Scroller
在[Android View体系(二)实现View滑动的六种方法]这篇文章中我们讲到了用Scroller来实现View的滑动,所以这篇文章我们就不介绍Scroller是如何使用的了,本篇就从源码来分析下Scroller为何能够实现View的滑动。原创 2016-03-05 16:35:34 · 7502 阅读 · 6 评论 -
Android View体系(五)从源码解析View的事件分发机制
三年前写过事件分发机制的文章但是写的不是很好,所以重新再写一篇,关于事件分发机制的文章已经有很多,但是希望我这篇是最简洁、最易懂的一篇。原创 2016-03-12 13:35:43 · 5448 阅读 · 11 评论 -
Android View体系(九)自定义View
学习了以上的文章后,接下来我们来讲讲自定义View,自定义View一直被认为是高手掌握的技能,因为情况太多,想实现的效果又变化多端,但它也要遵循一定的规则,我们要讲的就是这个规则,至于那些变化多端的酷炫的效果就由各位来慢慢发挥了。但是需要注意的是凡事都要有个度,自定义View毕竟不是规范的控件,如果不设计好不考虑性能反而会适得其反,另外适配起来可能也会产生问题,笔者的建议是如果能用系统控件的还是尽量用系统控件。原创 2016-04-06 11:32:11 · 7455 阅读 · 4 评论 -
Android View体系(六)从源码解析Activity的构成
本来这篇是要讲View的工作流程的,View的工作流程主要指的measure、layout、draw这三大流程,在讲到这三大流程之前我们有必要要先了解下Activity的构成,所以就有了这篇文章。原创 2016-03-15 17:44:35 · 5648 阅读 · 1 评论