獨孤碼農

毕生求一败而不可得 终埋剑于剑冢 诚寂寥难堪也

Android10系统架构和学习总纲

本文为Android10系统架构和学习总纲,会分类列出博主学习android10的所有博文,方便大家查阅

一.Android系统架构 Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层,下图是一张官网经典的架构分层图 应用层 系统内置的应用程序以及非系统级的应用程序都是属于应用层。负责与用户进行直接交互,通常都是用Java进行开发的。 应用框架层(Java Framework) 应用框...

Android源码查看和下载

汇总一下android源码下载和在线查看的网站和方法

本文最后更新于 2021-07-25 更新内容:删除了访问不了的网站,更新网站截图,添加新的资源网站    学习研究android系统,最直接最好的方法就是阅读源码(Read The Fucking Source Code),本篇教程汇总一下能够查看android源码的网站和下载源码的方法 一 在线查看 https://source.android.com/source/ 首...

Android基础探究之Handler深入学习

之前对handler有过一次学习总结,这次从源码角度再次深入学习一下

Handler作为Android应用层开发,线程通信一大重点,可以说是使用最频繁的一个机制,不管是IntentService,ThreadHandler都绕不开它。本文详解Handler机制的内部源码 带着以下几个问题我们来开始本篇文章 UI线程的Looper在哪里创建? MessageQueue真的是个队列吗? ...

Android基础探究之HandlerThread学习

对android中的HandlerThread实现原理进行深入的学习

HandlerThread作为子线程管理常用类,他自带封装的Looper处理Message,可以说是十分实用。子线程调度任务,方便我们在子线程中做更多的花样。 前言 HandlerThread内部实现很简单,主要用在需要进行子线程调度任务的时候创建,但是想要完善熟悉原理,你必须熟悉Handler的内部原理实...

一例系统死机案例分析

Debuggerd存在BUG导致系统死机

1. 问题现象 屏幕没有任何刷新,输入事件无任何响应,即我们平时说的死机(冻屏); watchdog没有重启system_server; 问题现场可以连接adb; 2. 初步分析 死机问题分析前的准备工作: (1)拿到问题现场,及时...

Android基础探究之三探Thread

对android中的ThreadLocal实现原理进行深入的学习

一、前言 ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定的线程中才可以访问,其他线程则无法获取。 二、使用场景 1、当某些数据是以线程为作用域且不同线程之间具有不同数据副本的时候,就可以考虑使用ThreadLocal,例如Android中的Hand...

Android基础探究之再探Thread

对android中的thread实现原理进行深入的学习

前言 对常用的Thread做一次源码剖析,更好的去理解和使用它,看完之后你会明白的几个问题: 调用start发生了什么?多次调用start会怎么样?start和run方法的区别join和sleep的区别什么是守护进程 一、创建使用 1. 初始化 Thread构造函数 内部调用— init方法 java.lan...

Android基础探究之初探Thread

对Thread的实现原理进行一番剖析

Thread与runable的原理有什么不同,本篇文章试着剖析一下,首先写一个例子看看Thread和runable分别是怎么用的。 先添加一个Thread的子类,并重写run方法即可 package com.example.threaddemo; import android.util.Log; public class ThreadSub extends Thread i...

AccessibilityService学习

AccessibilityService学习记录

前言 今天我们将使用AccessibilityService实现: 监听第三方程序的界面变化(监听第三方程序的启动的实现原理)。模拟点击第三方应用的按钮(自动抢红包程序的实现原理)。监听第三方程序的点击事件。 模拟程序 我们先写一个模拟程序,该模拟程序只有一个按钮用于模拟点击事件。 public class MainAc...

android通知栏解析学习

8.0系统后使用通知栏需要先创建渠道,多渠道可以设置渠道组进行管理

创建渠道 8.0系统后使用通知栏需要先创建渠道,多渠道可以设置渠道组进行管理。如果你项目的targetSdkVersion>=26,如果没有进行渠道适配,将完全无法弹出通知栏。如果targetSdkVersion>=26,且升级了Android核心库,那么原来的通知栏构造方法会显示为废弃方法&#...

Binder协议处理问题分析记录

Binder协议处理紊乱,同步嵌套异步,导致系统重启

问题现象 问题最早是由接电话重启的现象暴露出来的,当时看到异常信息是Native crash,栈如下: Build fingerprint: 'qiku/scorpio/scorpio:6.0.1/MXB48T/6.10.8:user/release-keys' Revision: '0' ABI: 'arm6...