自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zplxl99的专栏

小菜鸟的日常

  • 博客(33)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android Studio报错解决方案

本文给出Android Studio报错的解决方案。一.无法获取com.android.tools.build:gradle:3.5.3AS在sync的时候会报错:Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/…原因:这个网址一直无法成功获取资源,只要带有https://dl.google.com/dl/android/maven2/com/这样的链接都无法下载。所以一直无法同步成功。解决方

2020-11-18 02:30:57 829

原创 性能优化 -- Systrace概述

性能优化在Android中是经久不衰的话题了。而大家耳熟能详的就是Systrace,那Systrace到底是什么呢?我们这篇文章就来一探究竟!一.概述​ Systrace是Android平台提供的一个工具,用于记录短期内手机设备的活动情况。这个工具会生成一份html格式的报告,这个报告汇总了Android内核中的数据,比如CPU调度、磁盘活动、应用线程。​ systrace文件我们用chrome浏览器打开,先来放一张通用图:二.Systrace的获取1.工具抓取首先我们先要下载最新的Andro

2020-08-17 03:01:23 803

原创 AndroidManifest解析

一.简介AndroidManifest.xml文件在Android中我们称为清单文件。包含了应用的包名、权限、四大组件等信息。一般我们直接将APK修改格式为zip后解压缩生成的AndroidManifest.xml打开(比如用Notepad)会是一堆乱码。是因为在APP打包的过程中,清单文件被编译成了二进制数据存储在安装包中。所以,这里我们就来研究下AndroidManifest.xml的二进制文件结构,这样我们才可以获取到我们需要的信息。(当然有一些开源工具,比如apktool、AXmlPrint

2020-06-01 01:33:09 1760 1

原创 WindowManagerService第四讲之Wms简述

一.Wms的介绍前面三讲主要多涉及的是有关window的概念。这讲我们主要介绍WindowManagerService。众所周知Wms是windowManager的管理者,其实他还有其他重要的职责。WMS的主要的职责是:1.保持窗口的层级关系,以便SurfaceFlinger能够据此绘制屏幕;2.把窗口信息传递给InputManager对象,以便InputDispatcher能够把输入消息...

2020-03-10 16:26:18 1773 4

原创 WindowManagerService第三讲之Window的创建

在第一讲中我们知道,系统按照Window的type分为:应用窗口、子窗口、系统窗口。我们分别以其中的情况来1.Activity的Window创建在WMS系列第一讲中介绍PhoneWindow的时候,我们有介绍PhoneWindow的创建时机是在ActivityThread中调用attach()方法初始化Activity。这个时候Activity中就创建了Window对象。接下来就需要在窗口中...

2020-03-03 17:12:27 284

原创 WindowManagerService第二讲之Window的操作

在第一讲的时候我们说WindowManager类继承于ViewManager,ViewManager是一个接口类。实现了三个方法,对应的分别是窗口的添加、更新、删除。我们下面对于这三个Window的操作流程来详述。1.Window的添加A.ViewManager#addViewpublic interface ViewManager{ /** * Assign the ...

2020-02-28 16:14:26 815

原创 WindowManagerService第一讲之WMS基础知识

一.初识Window1.窗口的定义”窗口“的概念在Android中我们可以理解为一个独立的界面,比如说一个对话框窗口、一个菜单窗口、一个Activity界面窗口等。Window在Android中是一个抽象类,该抽象类的唯一实现类是PhoneWindow。View在Android中也是一个类,简单的理解成视图,比如说界面中的button、textview等。Window对View会进行管理...

2020-02-26 17:52:45 1076

原创 ActivityManagerService第六讲之AMS架构

一.Activity的系统架构从第一讲的Activity启动流程中我们知道,系统层级是通过Context来调用startActivity,最终实现是在AMS中。而系统进程通过zygote的fork&run 出的ActivityThread来接受从AMS中发出来的消息并处理。Activity的架构如下:1.ActivityThreadmain()函数是ActivityThread的...

2020-02-25 22:50:20 1136

原创 ActivityManagerService第五讲之ActivityManagerService的启动过程

一.AMS的启动如果熟悉android系统启动流程的话,我们知道Zygote启动的时候会在ZygoteInit中fork一个名为system_server的过程。而SystemServer进程启动过程中会启动各种系统服务,系统服务中包含引导服务,而ActivityManagerService就是在这个时候被启动的。二.AMS启动流程我们从SystemServer的run()方法为开始。1....

2020-02-24 11:25:01 533

原创 ActivityManagerService第四讲之ContentProvider启动流程

一.ContentProvider的启动流程应用进程的启动最终会调用ActivityThread的main()方法上,我们从这个方法开始看。(注意:ContentProvider的onCreate方法会早于Application的onCreate方法执行的)1.ActivityThread#main public static void main(String[] args) { ...

2020-02-20 19:04:11 243

原创 ActivityManagerService第三讲之Broadcast Receiver工作流程

一.Broadcast Receiver工作流程1.注册Broadcast Receiver分为静态注册(在AndroidManifest.xml中)和 动态注册(在代码中调用registerReceiver()方法)2.动态注册Broadcast Receiver我们讲一下动态注册广播的流程。先从ContextWrapper的registerReceiver()方法开始A.Contex...

2020-02-17 18:01:05 643

原创 ActivityManagerService第二讲之Service启动流程

一.Service启动流程我们启动一个Service的时候一般是通过调用startService()方法或者bindService()方法。我们分别来看下这两个方法的流程。1.startService我们首先会在Activity调用startService()方法。可以看到Activity类中并没有startService()方法的实现;接着看他的父类ContextThemeWrapper,...

2020-02-14 16:35:29 928

原创 ActivityManagerService第一讲之Activity启动流程

一.Activity启动简述我们从Launcher启动某个应用,本质上就是Activity的启动。我们下面简单的讲述一下整个流程。此处流程是基于Android-10源码。二.Activity启动流程该流程是基于根Activity启动的,也就是我从桌面中点击应用图标开始的。1.Activity#startActivity​ 传入参数为intent和Bundle。最终都是调用startAct...

2020-02-13 11:52:34 2056

原创 Android Frameworks专栏简介

一.专栏的目的这个专栏全部是涉及Frameworks层的内容。主要讲一些常用的系统级服务,比如ActivityManagerService、WindowManagerService、PackageManagerService等。即是对自己技术的总结,也是和其他同仁进行技术分享。如果大家有什么想法或者觉得哪里写的有问题,欢迎及时的提出,一定第一时间进行改正。二.专栏的形式主要涉及代码上流程的...

2020-01-16 23:42:59 311

原创 PowerManagerService第五讲之常见问题

1.唤醒问题​ 通常按Power key去亮屏,会产生两种结果:一个是能亮起来,但是时间长;另一个是无法点亮。亮屏慢的问题更关注的是各个阶段的时间,找到哪一个时间最长后,进一步分析耗时长的阶段;无法亮屏的问题需要去确认是走到哪个阶段了。​ 一般的流程上是:底层把power key传到上层 --> PowerManagerService处理 -->初始化keyguard/唤醒底层 -...

2020-01-12 10:02:59 1169

原创 PowerManagerService第四讲之亮屏

一.亮屏​ 在上面讲解PSensor灭屏的时候其实已经有涉及到关于亮屏的相关知识。当灭屏之后WakeLock就不会被进程所持有,因此如果需要点亮屏幕,就需要去申请WakeLock。我们以最简单的按Power键亮屏来讲述1.Power键亮屏按下Power键的时候,down值为true,就会执行到interceptPowerKeyDown方法: private void inter...

2020-01-12 09:52:13 630

原创 PowerManagerService第三讲之灭屏

一.灭屏简述先来讲灭屏,灭屏的方式一般有如下几种:1.用户按Power键灭屏;2.手机自动放置一段时间后超时灭屏;3.Sensor灭屏。灭屏的原因在PowerManager类中的sleepReasonToString方法有列出常见的: /** * @hide */ public static String sleepReasonToString(int...

2020-01-12 09:36:46 1904 1

原创 PowerManagerService第二讲之WakeLock

WakeLock是一种锁机制,只要有进程持有这个锁,CPU就一直在工作,系统就不会进入到休眠状态。关于WakeLock的使用方法其实在PowerManager类中的注释已经给出了,来看描述: /** * This class gives you control of the power state of the device. * * <p> ...

2019-11-12 01:46:10 665

原创 PowerManagerService第一讲之初始化

一.简介PowerManagerService是负责Android系统中的电源管理方面的一个系统服务。与其他服务以及Hal层都有交互关系。二.PowerManager初始化如果对Android系统启动有一些了解的话,应该知道SystemServer启动之后会启动系统服务,其中就有PowerManagerService。1.启动PowerManagerServiceA.PowerManag...

2019-11-12 01:34:27 602

原创 从源码角度看Android消息机制

Android消息机制​ Android消息机制主要是指Handler的运行机制。而对应的就是以Handler、Looper、MessageQueue为主的一套消息机制。一.ThreadLocal​ 首先,ThreadLocal不是一个线程,他是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其他线程来说则无法获取到数据。(...

2019-11-06 01:42:11 352

原创 从源码角度来看View绘制

View的绘制一.简介      Android中的View是以Activity为载体存在的。Activity相当于一个完整的用户界面,他提供一个窗口来绘制各种View。一般来说,View存在两种形式:一种是单一的View控件;另一种是包含多个View的ViewGroup容器。      那一个View要绘制出来需要经过哪些过程呢?下面我们逐一给出。二.measure方法1.Measur...

2019-11-03 18:33:23 179

原创 Android AMS 进阶一

Android AMS 进阶一Android启动流程一.Android init进程启动1.init简介init是一个进程,他是Linux系统中用户空间的第一个进程,而Android是基于Linux内核的。所以init进程也是Android系统中用户空间的第一个进程,其进程号为1。它的主要职责是创建Zygote和属性服务等。2.init进程启动之前在init进程启动之前还有如下...

2019-06-02 23:18:50 1022

原创 Android Annotation

Android Annotation1.注解的定义什么是注解?字面意思注释解释。用来给我们注释的,同时解释给编译器。Java 注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。举一个最最常见的: @Override protected Bitmap transform( @N...

2019-03-30 14:04:32 1140

原创 OkHttp

OKhttp简介OKhttp是square公司出品的,它是一个高效的HTTP客户端,(Retrofit中的http通信实现也是基于OKhttp的)它有以下默认特性:HTTP/2 support allows all requests to the same host to share a socket.Connection pooling reduces request latency...

2019-03-22 02:38:54 1299

原创 Glide4.9.0-原理篇

Glide4.9.0-原理篇简介Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline),以及自动的资源池技术。虽然Glide 的主要目标是让任何形式的图片列表的滚动尽可能地变得更快、更平滑,但实际上,Glide几乎能满足你对远程图片的拉取/缩放/显示的一切需求。这里是基于目前最新的Gl...

2019-03-22 02:20:07 3580

原创 Android控件之RecyclerView

一.RecyclerView作用:用来替换ListView和GridView。好处:具有高度的解耦和效率。可以实现丰富多样的效果;缺点:列表分割线需要自定义;列表的点击事件需要自行实现;1.基本用法:一般在xml文件中定义一个recyclerview,java中去实现(调用setAdap ter加载适配器,显示recyclerview的layout及加载数据)。这个和ListV...

2018-07-28 22:17:28 325

原创 Android apk安装浅析

一.APK安装—通过PackageInstaller来安装虽然是通过package/apps/PackageInstaller 来安装应用,但是最终调用的还是PkMS中的scanPackageLI()函数来实现安装。先放上流程图,再来细说下。...

2018-06-07 22:35:22 308

原创 Android so文件浅析

一. 简述 Android中的so文件是动态链接库,是二进制文件,即ELF文件。多用于NDK开发中。二. 基础知识三. so文件格式解析 so文件即ELF文件,是一个二进制文件,我们可以用UltraEdit打开查看。如下: 上面有一处很明显看到,在so文件解析出来的头文件字段是ELF,也印证.so是一个ELF格式的问题。 ELF文件...

2018-05-19 17:50:30 32732 3

原创 Android OOM 问题

一.引言 Android系统对dalvik的vm heapsize是有硬性限制的,当java进程申请空间超过MAX值的时候,就会抛出OOM异常,可以通过如下命令,查看这个MAX值。 adb shell getprop | grep dalvik.vm.heapgrowthlimit二.详述 1. 一般出现OOM的时候,在Log中是能够很明显看出来的,这里注意oom是一...

2018-03-13 22:24:42 314

原创 Android SystemUI 技术总结

1.状态栏StatusBar 1.1 卡状态/运营商的显示; 1.2 wifi图标显示(包含上下行箭头显示); 1.3 数据连接图标显示 (信号格强度、漫游图标); 1.4 电量图标显示(包含电量百分比显示);2.通知 Notification 2.1 状态栏通知; 2.2 下拉状态栏通知; 2.3 弹框通知(锁屏界面中来电、来信息等);3.导航栏NavigationBar...

2018-03-11 18:42:05 583

原创 Android O Launcher3-Workspace加载

一.简述: Launcher这里我们研究主要是Launcher3(Android O平台),各个手机公司自家的ROM Launcher,咱们也看不到,但是八九不离十啦,他们也应该是重写关键函数来实现他们的需要。二.流程详述: 1.核心方法: LauncherProvider#loadDefaultFavoritesIfNecessary() A.第一种:从某个设定好的A...

2018-03-11 16:28:01 4294 1

原创 AndroidO SystemUI-QuickSettings

一.简述 QS是SystemUI中的一个功能吧,即下拉栏。(这里主要以Android 8.0平台源码阐述)代码实现路径主要在: alps/frameworks/base/packages/SystemUI/src/com/android/systemui/qs 二.常见详解 1.QS中的排序 排序的顺序是在xml中定义的在/frameworks/base/pac...

2018-03-07 23:00:15 4870 8

原创 Android View深入浅出

基于Android7.1平台的setContentView流程解析

2017-06-11 02:27:22 275

CCNP内部培训资料-互联网简述

CCNP的培训资料~只发一章,看大家感觉如何,之后会一章章发出来。

2011-11-14

计算机组成原理的课件

计算机专业课程-计算机组成原理的课程!老师精心准备的!希望有帮助哈!

2009-09-28

数据库系统概论课后习题

数据库系统概论课后习题(第四版),答案很详细!希望有所帮助哈!

2009-09-28

空空如也

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

TA关注的人

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