源码分析
Zhou Jiang
今天,你努力了吗?
展开
-
Android应用程序进程启动源码解析
在前面我们从源码层面分析了Android系统启动流程,了解它们也主要是为了我们开发App服务的。应用程序想要启动首先需要应用程序进程存在,而应用程序进程的创建需要SystemServer进程中的ActivityManagerService向Zygote进程发送消息,通过zygote进程fork自身来创建应用程序进程,新创建的应用程序进程就有zygote进程创建的虚拟机实例,同时创建了Binder线程池和Handler消息循环机制,便于进程间消息通信。今天就来从源码角度分析我们关心的Android应用程序进.原创 2020-10-07 15:51:25 · 705 阅读 · 1 评论 -
ViewGroup事件分发机制源码解析(二)ViewGroup篇(含滑动冲突源码解析和解决)
上一篇讲解了View的事件分发机制,查看点击链接View事件分发机制查看。本文基于Android9.0的源码进行分析ViewGroup的事件分发机制和事件冲突解决方案,源码点击https://github.com/Oaman/Forward查看。概述本文分如下几个步骤分析ViewGroup的Down事件的分发源码分析ViewGroup的Move事件的分发源码分析ViewGroup的滑动事件冲突处理实战 + 源码分析ViewGroup的事件分发机制源码概览ViewGroup的dispat.原创 2020-10-07 15:49:06 · 528 阅读 · 0 评论 -
ViewGroup事件分发机制源码解析(一)View篇
本篇基于Android9.0的源码进行分析View的事件分发机制。View事件处理机制源码分析布局文件如下,根View是一个LinearLayout,内部放了两个view分别是Button和ImageView.<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://s.原创 2020-10-07 15:47:11 · 398 阅读 · 4 评论 -
Retrofit如何实现自定义注解?
Retrofit现在在网络请求中是使用的最多的库,它是对OkHttp的一层封装,使用起来非常方便。但是在工作中经常会遇到一些需求,比如对某些接口加上一些token验证,某一些不需要加上token验证,我们当然可以在每一个接口后面直接加上获取不加这个参数,但是这样做不是好的解决方案。那么这个时候我们就需要考虑使用自定义注解的方式来解决这个问题。首先实现一个简单的网络请求我们使用wanandroid中的两个接口用来做演示,wanandroid地址是https://www.wanandroid.com/.原创 2020-09-13 10:33:09 · 1479 阅读 · 2 评论 -
一道关于Integer的面试题,你真的会了吗?
今天分享一道关于Integer的面试题。1 面试题面试题是这样的, 要手写打印结果:public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 128; Integer f = 128; Long g = 3L; .原创 2020-09-12 13:42:50 · 543 阅读 · 0 评论 -
HashMap实现原理与源码分析(JDK1.7与JDK1.8对比分析)
首先分析1.7源码原创 2020-03-12 00:16:49 · 654 阅读 · 0 评论 -
Android Jetpack架构组件(九)WorkManager源码篇
上一篇讲解了WorkManager使用篇,本篇我们就从源码角度来分析WorkManager的工作原理。WorkManager的原理原创 2020-03-03 20:07:32 · 1860 阅读 · 2 评论 -
Android Jetpack架构组件(八)WorkManager使用篇
前言WorkManager是Jetpack很重要的一个组件,本篇我们就先来讲讲它是如何使用的,在讲解之前我们先了解关于后台处理的一些痛点。后台处理指南我们知道每个 Android 应用都有一个主线程,它负责处理界面(包括测量和绘制视图)、协调用户互动以及接收生命周期事件。如果有太多工作在主线程中进行,则应用可能会挂起或运行速度变慢,从而导致用户体验不佳。任何长时间运行的计算和操作(例如解...原创 2020-03-02 21:12:50 · 2381 阅读 · 0 评论 -
Android Jetpack架构组件(七)Room使用篇
前言前面几篇讲解了Lifecycle,LiveData,ViewModel,有了前面这几篇的铺垫,就能引出我们今天要讲解的Room了,Room是一个数据库访问组件,对SqLite数据库做了友好的封装,使我们在编码的时候,只需要注重逻辑的部分即可,数据库就交给Room去流畅的访问即可。Room使用步骤 > Github项目地址1 添加依赖build.gradle {apply p...原创 2020-03-01 11:38:50 · 1886 阅读 · 0 评论 -
Android Jetpack架构组件(六)ViewModel使用和源码篇
前言原创 2020-02-27 22:17:39 · 1501 阅读 · 0 评论 -
Android Jetpack架构组件(五)LiveData原理篇
前言上一篇我们讲解了Jetpack中LiveData使用篇, 本片我们从源码角度来分析LiveData.是如何实现的。LiveData源码分析我们就以上一篇的基本使用入手来分析源码class TestActivity : AppCompatActivity() { private val TAG by lazy { TestActivity::class.ja...原创 2020-02-25 00:03:40 · 877 阅读 · 0 评论 -
Android Jetpack架构组件(三)Lifecycle原理篇
前言上一篇讲述了Jetpack中的Lifecycle的使用,这一篇我们从源码角度来分析一下它是如何实现的。源码解析(基于最新的2.2.0版本)在上一篇的Lifecycle使用篇中我们知道了怎么使用,这里我们把源码部分贴出来,我们从使用的角度来分析源码是如何实现的:class DetailActivity : AppCompatActivity() { override fun...原创 2020-02-18 22:24:16 · 1576 阅读 · 1 评论 -
[Android源码解析] View.post到底干了啥
在Android Handler:手把手带你深入分析 Handler机制源码中我们说到了在子线程中更新UI的几种方法,其中就有一种是使用view.post,那么到底view.post做了什么呢?我们今天就从源码的角度分析一下(基于Android10的源码,各个版本的源码大同小异)。问题列表...原创 2020-02-16 17:56:36 · 799 阅读 · 0 评论 -
Android 多线程:AsyncTask的原理及其源码分析
在Android Handler:手把手带你深入分析 Handler机制源码中我们分析了最基础也最重要的Handler机制源码部分,但是使用起来没有那么方便,今天我们就来介绍一个关于Handler源码的封装类,AsyncTask。我们从两个方面来分析如何使用AsyncTask?AsyncTask源码分析。...原创 2020-01-11 14:31:32 · 727 阅读 · 0 评论 -
Android Handler:手把手带你深入分析 Handler机制源码
Android的Handler机制,我相信是每一位小伙伴面试都经历过的一道题目,Handler机制可以说是Android的很基础但是很重要的内容,因为深入理解了它,很多内容理解起来就变的轻而易举了,比如AsyncTask,HandlerThread, IntentService内部都用到了Handler机制,今天我们就从源码角度来分析它。为什么要有Handler机制 ?Handler机制...原创 2020-02-01 11:09:25 · 791 阅读 · 0 评论 -
Service流程源码分析(二) bindService
基于Android 10的Activity启动流程源码分析。原创 2020-01-07 23:04:54 · 848 阅读 · 0 评论 -
Service流程源码分析(一) startService
前面介绍了Activity的启动流程,我们这一节来说说Service的启动流程。Service主要处理一些不与用户交互的耗时任务,比如I/O操作。Service分为两种,一种是通过startService(intent)来启动,另外一种是通过bindService(intent)的形式来启动一个Service。本篇主要介绍startService(intent)启动流程源码分析。sta...原创 2020-01-06 22:54:03 · 1045 阅读 · 0 评论 -
Android深入理解Context–Context使用的误区
我们分为四篇文章详细介绍Context, 这是第四篇Android深入理解Context–Application中Context的创建过程Android深入理解Context–Activity中Context的创建过程Android深入理解Context–Service中Context的创建过程Context使用的误区下面说本系列第一篇文章的第二个题目:getAppl...原创 2020-01-01 00:35:47 · 999 阅读 · 0 评论 -
Android深入理解Context--Service中Context的创建过程
我们分为四篇文章详细介绍Context, 这是第三篇Android深入理解Context–Application中Context的创建过程Android深入理解Context–Activity中Context的创建过程Android深入理解Context–Service中Context的创建过程Context使用的误区因为本文是分析Service的Context创建流...原创 2020-01-01 00:25:59 · 3110 阅读 · 0 评论 -
Android深入理解Context--Activity中Context的创建过程
我们分为四篇文章详细介绍Context, 这是第二篇Android深入理解Context–Application中Context的创建过程Android深入理解Context–Activity中Context的创建过程Android深入理解Context–Service中Context的创建过程Context使用的误区上一节讲了源码Application中创建Cont...原创 2020-01-01 00:19:57 · 1576 阅读 · 0 评论 -
Android深入理解Context--Application中Context的创建过程
我们分为四篇文章详细介绍Context, 这是第一篇1 Android深入理解Context–Application中Context的创建过程234前言Context是我们在开发中经常使用到的一个类,它的功能非常丰富,但是很多人可能仅仅知道怎么用,或者说是比较迷茫的使用, 不知道Context内部的逻辑,这一次我们就从源码的角度来分析一下Context。在讲解之前,首先抛出...原创 2020-01-01 00:15:44 · 2634 阅读 · 0 评论 -
Activity启动流程源码分析
前言最近在查看Android中Activity的源码时候,发现和之前印象中的不太一样,主要是和Android8.0的区别比较大,所以就干脆用最新的Android10的源码整理出来。至于为什么要阅读源码,这个在我看来最主要的原因有两个,第一是因为我们不仅要知其然,还要知其所以然,这样才能为什么要阅读源码 ?因为我们不仅要知其然,还要知其所以然,这样才能在开发中快速高效的定位问题,游刃有...原创 2020-01-01 00:00:45 · 1106 阅读 · 0 评论 -
Android O - java.lang.RuntimeException: An error occurred while executing doInBackground()
最近任务列表中多了一个bug,让在这个sprint中解决掉,bug的堆栈信息如下:Fatal Exception: java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:353) ...原创 2019-12-15 18:05:29 · 12972 阅读 · 1 评论 -
EventBus源码分析
前言:EventBus在现如今Android项目中用来进行通信使用很广泛。在本篇文章中,我将会分为下面几个模块来讲解EventBus:如何使用,源码分析,使用注意事项。在官网中有这么一句话来描述EventBusEvent bus for Android and Java that simplifies communication between Activities, Fragments...原创 2019-10-27 23:16:43 · 711 阅读 · 0 评论