
Android进阶
文章平均质量分 97
Android高级开发
jeanboydev
Android | iOS | Web 开发者,专注移动开发领域,热爱分享,热爱开源。
展开
-
最通俗易懂的 Handler 源码解析
简介在 Android 中 UI 线程是不安全的,如果在子线程中尝试进行更新 UI 操作,程序就有可能会崩溃;当然如果在 UI 线程中做耗时的操作,系统就会弹出 ANR 弹窗提示该程序无响应,十分影响用户体验。Android 系统中提供了 Handler,这样我们就可以使用 Handler 在子线程中发送消息来更新 UI;也可以将耗时操作交给子线程处理,等子线程处理完后再使用 Handler ...原创 2019-05-22 16:30:04 · 744 阅读 · 0 评论 -
分享一些 Broadcast 使用技巧
简介Broadcast(广播) 是 Android 的四大组件之一,用于进程/线程间通信。广播最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的,它只负责「说」而不管你「听不听」。广播可以来之系统,例如,Android 系统在发生各种系统事件时发送广播(系统启动或者设备开始充电时)。也可以来自于其他应用程序,例如,应用程序也可以发送自定义广播,来通知其他应用程序...原创 2019-05-08 20:33:14 · 1191 阅读 · 1 评论 -
图解 Android 系列(二)深入理解 init 与 zygote 进程
介绍这是一个连载的系列「图解 Android 系列」,我将持续为大家提供尽可能通俗易懂的 Android 源码分析。所有引用的源码片段,我都会在第一行标明源文件完整路径。为了文章篇幅考虑源码中间可能有删减,删减部分会用省略号代替。本系列源码基于:Android Oreo(8.0)init 进程在上篇文章 揭秘 Android 系统启动过程 中介绍到,init 进程启动分为前后两部分,...原创 2019-04-18 17:50:41 · 1469 阅读 · 2 评论 -
如何正确的使用 Service?
简介Service(服务)是 Android 四大组件之一,它的主要作用是执行后台操作,Activity 提供了 UI 界面来跟用户交互,而 Service 则没有 UI 界面,所有的操作都是在后台完成。Service 跟 Activity 一样也可以由其它应用程序启动,即使用户切换到了其它应用,Service 仍然保持在后台运行。此外,一个组件可以与 Service 进行绑定(bind)来...原创 2019-04-04 17:59:29 · 1300 阅读 · 0 评论 -
Fragment 相关知识点都在这里了
简介Fragment (简称碎片)是 Android 3.0(API 11)提出的。为了兼容低版本 support-v4 库中也开发了一套Fragment API 最低兼容到 Android 1.6 的版本。过去 support-v4 库是一个 jar 包,从 24.2.0 版本开始,将 support-v4 库模块化为多个 jar 包。包含 support-fragment、 support...原创 2019-04-03 13:47:07 · 794 阅读 · 0 评论 -
图解 Android 系列(一)揭秘 Android 系统启动过程
当我们按下手机开机按键后,手机就会启动了。然后会看到 Logo,开机动画,最后会进入到手机桌面(Launcher),手机也就启动完成了。我一直搞不明白,这个过程到底做了什么?为什么按一个按键,手机就启动了呢?随着对 Android 的了解越来越多,直到阅读了源码,才逐渐解答了我的疑惑。如果你也有相同疑惑,请继续往下看,我将从源码的角度分析下 Android 系统启动的整个流程。计算机是如何启...原创 2019-03-27 13:20:35 · 2545 阅读 · 3 评论 -
重新认识 Activity 解答你的全部疑惑
什么是 Activity?Activity 是 Android 的四大组件之一,是用户操作的可视化界面,它为用户提供了一个完成操作指令的窗口。当我们创建完 Activity 之后,需要调用 setContentView(view) 方法来完成界面的显示,以此来为用户提供交互的入口。在 Android App 中只要能看见的几乎都要依托于 Activity,所以 Activity 是在开发中使用...原创 2019-03-22 15:36:27 · 1098 阅读 · 0 评论 -
一篇文章看明白 Android v1 & v2 签名机制
Android - v1 & v2 签名机制一、什么是签名?要想知道签名是什么,先来看为什么需要签名 ?了解 HTTPS 通信的同学应该知道,在消息通信时,必须至少解决两个问题:一是确保消息来源的真实性,二是确保消息不会被第三方篡改。在安装 APK 时,同样需要确保 APK 来源的真实性,以及 APK 没有被第三方篡改。如何解决这两个问题呢?方法就是开发者对 APK 进行签名:在 A...原创 2018-12-06 11:24:35 · 25724 阅读 · 15 评论 -
Android Studio 3.x 升级指南
Android Studio 3.x 升级指南Gradle 版本升级Gradle Plugin 升级到 3.0.0 及以上,修改 project/build.gradle 文件:buildscript { repositories { ... google()//*增加 } dependencies { ...原创 2018-05-07 14:05:25 · 1528 阅读 · 0 评论 -
一篇文章看明白 Android PackageManagerService 工作流程
Android - PackageMangerService 分析概述PackageManagerService(简称 PKMS),是 Android 系统中核心服务之一,管理着所有跟 package 相关的工作,常见的比如安装、卸载应用。PackageManagerService 是在 SystemServer 进程中启动的。如不了解 Android 是如何从开机到 Launcher 启...原创 2018-09-19 17:03:01 · 26424 阅读 · 6 评论 -
一篇文章看明白 Android Service 启动过程
Android - Service 启动过程概述Service 启动过程与 Activity 启动过程比较相似,不了解 Activity 启动过程的可以先看一下:Activity 启动过程。Service 的启动分两种情况:startService,bindService。startService通常情况我们在调用 startService 启动 Service 是...原创 2018-04-02 10:36:25 · 9397 阅读 · 0 评论 -
一篇文章看明白 Android 图形系统 Surface 与 SurfaceFlinger 之间的关系
Android - SurfaceFlinger 图形系统概述Android 系统启动过程Activity 创建过程Activity 与 Window 与 View 之间的关系通过前面的知识我们知道了,Android 系统从按下开机键到桌面,从桌面点击 App 图标到 Activity 显示的过程。但是 Activity 是怎么显示在屏幕上的呢?下面我们就来讨论下这一过...原创 2018-03-08 13:49:11 · 46372 阅读 · 18 评论 -
一篇文章看明白 Activity 与 Window 与 View 之间的关系
Android - Activity 与 Window 与 View 之间的关系概述我们知道 Activity 启动后就可以看到我们写的 Layout 布局界面,Activity 从 setContentView() 到显示中间做了什么呢?下面我们就来分析下这个过程。如不了解 Activity 的启动过程请参阅:Activity 启动过程本文主要对于以下问题进行分析:Wi...原创 2018-03-01 10:24:31 · 38869 阅读 · 7 评论 -
一篇文章看明白 Android 从点击应用图标到界面显示的过程
Android - Activity 启动过程概述从点击桌面应用图标到应用显示的过程我们再熟悉不过了,下面我们来分析下这个过程都做了什么。本文主要对以下问题分析:ActivityThread 是什么,它是一个线程吗,如何被启动的?ActivityClientRecord 与 ActivityRecord 是什么?Context 是什么,ContextImpl,Contex...原创 2018-02-12 17:40:41 · 28200 阅读 · 13 评论 -
一篇文章看明白 Android 系统启动时都干了什么
Android - 系统启动过程计算机是如何启动的?首先熟悉一些概念,计算机的硬件包括:CPU,内存,硬盘,显卡,显示器,键盘鼠标等其他输入输出设备。 所有的软件(比如:操作系统)都是存放在硬盘上,程序执行时需要将程序从硬盘上读取到内存中然后加载到 CPU 中来运行。 当我们按下开机键时,此时内存中什么都没有,,因此需要借助某种方式,将操作系统加载到内存中,而完成这项任务的就是 BIO...原创 2018-01-26 17:32:44 · 20035 阅读 · 10 评论 -
Android-性能优化-内存优化
Android-性能优化-内存优化概述JVM 内存分配机制详见:JVM 内存分配机制JVM 垃圾回收机制详见:JVM 垃圾回收机制DVM 与 JVM 的区别虚拟机区别Dalvik 虚拟机(DVM)是 Android 系统在 java虚拟机(JVM)基础上优化得到的,DVM 是基于寄存器的,而 JVM 是基于栈的,由于寄存器高效快速的特性,...原创 2017-09-22 11:16:56 · 3982 阅读 · 0 评论 -
Android-性能优化-UI优化
Android-性能优化-UI优化概述Android 应用的卡顿,丢帧等,这些影响用户体验的因素绝大部分都与 16ms 这个值有关。 下面我们来讨论下 UI 渲染方面影响应用流畅性的因素。16ms12 fps(帧/秒):由于人类眼睛的特殊生理结构,如果所看画面之帧率高于每秒约 10-12 fps 的时候,就会认为是连贯的。 早期的无声电影的帧率介于 16-24 fps 之...原创 2017-09-06 10:00:35 · 3533 阅读 · 1 评论 -
Android 多渠道打包最佳实践
Android-Flavors概述该项目演示了在 Android Studio 中使用 gradle 构建渠道包。渠道号以友盟 SDK 为例,打包多渠道:GooglePlay,小米,友盟,360,豌豆荚,应用宝。 在 AndroidManifest.xml 中加入渠道区分标识。<meta-data android:name="UMENG_CHANNE...原创 2017-08-14 15:40:56 · 1342 阅读 · 0 评论 -
Android-反编译指南
Android-反编译指南反编译源码1. 使用 dex2jar作用:将 apk 反编译成 java 源码(classes.dex 转化成 jar 文件)dex2jar 下载:https://sourceforge.net/projects/dex2jar下载最新的 dex2jar 并解压2. 解压 apk 安装包,将 classes.dex 复制 dex2jar...原创 2017-06-26 14:18:09 · 531 阅读 · 0 评论 -
Android 项目架构探索
Android Architecture概述该项目结合 MVP 与 Clean 架构思想,探索在 Android 项目上的最佳实践。遵循 Clean Architecture 的原则。数据层(Data Layer):加入数据转换层(Mapper)将服务端数据模型(Entity)与本地数据模型(Model)解耦。业务层(Domain Layer):按模块划分业务,具体业务...原创 2017-08-09 19:53:38 · 797 阅读 · 0 评论 -
Windows 环境下载 Android 源码
Windows 环境下载 Android 源码前言Android 官网(该方式不适合 Windows 平台):https://source.android.com/source/downloading.html可是我就想在 Windows 中使用 Source Insight 看看源代码,当然可以!准备环境安装 git安装 Python自备梯子硬盘剩余容量最好大...原创 2017-04-28 19:25:16 · 22203 阅读 · 40 评论 -
Android 屏幕适配全攻略
Android-屏幕适配全攻略一、Android屏幕碎片化由于 Android 系统的开发性,任何用户、开发者、OEM厂商、运营商都可以对 Android 进行定制,修改成他们想要的样子。各大厂商、开发者的标准不统一,所以就造成了 Android 系统碎片化。但是这种“碎片化”到底到达什么程度呢?下面这张图片所显示的内容足以充分说明当今 Android 系统碎片化问题的严重性,...原创 2017-04-26 11:10:44 · 3375 阅读 · 0 评论 -
一篇文章了解相见恨晚的 Android Binder 进程间通讯机制
Android-Binder进程间通讯机制概述最近在学习Binder机制,在网上查阅了大量的资料,也看了老罗的Binder系列的博客和Innost的深入理解Binder系列的博客,都是从底层开始讲的,全是C代码,虽然之前学过C和C++,然而各种函数之间花式跳转,看的我都怀疑人生。毫不夸张的讲每看一遍都是新的内容,跟没看过一样。后来又看到了Gityuan的博客看到了一些图解仿佛发现了新大...原创 2017-04-11 18:12:53 · 79821 阅读 · 58 评论 -
一个 Demo 学会搭建 Android Studio JNI 开发环境
Android-JNITestAndroid Studio JNI environment. Android Studio JNI环境配置。项目链接:https://github.com/jeanboydev/Android-JNITest介绍Android Studio + NDK来实现JNI。什么是NDK与JNI技术? NDK:Native Developmen...原创 2017-04-10 10:24:24 · 1530 阅读 · 0 评论 -
一篇文章看明白 Android Activity 启动模式 & IntentFilter匹配规则
Android-Activity启动模式 & IntentFilter匹配规则原文链接: https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode/blob/master/android/Android-Activity%E5%90%AF%E5%8A%A8%E6%A8%A1%E5%BC%8F&IntentFi...原创 2017-04-07 10:32:44 · 1591 阅读 · 0 评论 -
一张图看明白 Android Activity 生命周期
Android-Activity生命周期原文链接: https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode/blob/master/android/Android-Activity%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.md概述作为四大组件中我们使用最频繁的 Activity...原创 2017-04-06 10:40:54 · 1498 阅读 · 0 评论 -
一张图看明白 Android Handler 消息机制
Android-Handler消息机制原文链接: https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode/blob/master/android/Android-Handler%E6%B6%88%E6%81%AF%E6%9C%BA%E5%88%B6.md概述Android 的消息机制主要是指 Handler ...原创 2017-03-31 20:39:47 · 1760 阅读 · 0 评论 -
Lottie动画库的使用 & 源码解析
Lottie动画库的使用 & 源码解析简介项目链接 https://github.com/airbnb/lottie-android原文链接: https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode/blob/master/Lottie动画开源库使用&源码分析.mdLottie是Airbn...原创 2017-03-22 10:31:20 · 2952 阅读 · 0 评论