Android Framework
文章平均质量分 94
AI女王
学习资料分享→推广名片
展开
-
Android 12:SplashScreen Compat源码解析
前言在上一篇文章Android 12 新功能:SplashScreen优化启动体验中我们介绍了Android 12上的一个新功能SplashScreen,同时提到了Google为了兼容低版本也提供了Androidx SplashScreen compat库,但是我们在使用的过程中发现这个库在Android 12和12以下版本表现并不一致,今天我们就从源码来分析一下实现细节。SplashScreenViewProviderAndroidx SplashScreen compat库的代码其实很少,只有两个原创 2022-03-31 16:45:52 · 386 阅读 · 0 评论 -
Android 12 已来,你的 App 崩溃了吗?
Android 12 已来,你的 App 崩溃了吗? 我们已经开始做 Android 12 的适配了,在 Android 12 中包含了很多的功能和一些行为的变更,接下来我们一起来分析这些行为的变更对我们的应用产生了那些影响。通过这篇文章你将学习到以下内容:为什么在 Android 12 上需要显示声明 android:exported 属性?为什么在 Android 12 上需要显示指定 PendingIntent 的可变性?为什么在 Android 12 上限制 adb 备份的默认行为?如何原创 2022-03-31 16:45:20 · 487 阅读 · 0 评论 -
Android - 资源加载扫盲
Android资源的含义Android使用xml文件描述各种资源,包括字符串、颜色、尺寸、主题、布局、甚至是图片(selector,layer-list)资源可分为两部分属性在APK程序中,属性定义在res/values/attrs.xml中,在系统中属性位于framework/base/core/res/res/values/attrs.xml文件中<declare-styleable name="Window"> <attr name="windowBackg原创 2022-03-30 15:16:13 · 875 阅读 · 0 评论 -
Android - 子线程为什么不能更新UI
报错信息:Only the original thread that created a view hierarchy can touch its views. 报错信息是在ViewRootImpl.java中出现的void checkThread() { if (mThread != Thread.currentThread()) { throw new CalledFromWrongThreadException( "Only the or原创 2022-03-30 15:14:20 · 286 阅读 · 0 评论 -
Android 将GitHub项目发布为远程依赖
由于新的小项目想依赖自己以前写的库,老是本地复制粘贴感觉很麻烦,然后学习了一下发布远程依赖,在此记录一下,也提供一些经验避免踩坑吧~一、发布 GitHub 项目如果已经了解发布 GitHub 项目请直接跳过这一步。这里说一下 Android Studio 上传项目到 GitHub:1. 下载并安装 Git 。2. 在 Android Studio 上配置 Git:File -> Settings -> Version Control -> Git。3. 配置 GitHub原创 2022-03-25 16:10:10 · 673 阅读 · 0 评论 -
Android 使用adb命令查看某个 进程 的 线程优先级
前言在上一篇博客中介绍了怎样使用ADB查看进程的优先级正好再写一篇博客说一下怎样查看这个进程中的线程优先级查看某个线程的优先级获取想要查看进程的PID查看线程优先级也很简单先执行命令:adb shell然后执行命令找到进程号:ps -A | grep 包名我这里使用的是ps -A | grep com ,可以筛选出进程名中带有‘com’的,方便查找自己想要看的进程,如下所示 根据进程的PID查看线程的优先级经过上一步的命令找到进程的PID之后,就可以执行下一步的查看线程优先级的命令了原创 2022-03-24 16:49:43 · 2357 阅读 · 0 评论 -
Android Serial串口功能 接入教程
一、什么是串口开发串行接口简称串口,也称 串行通信 接口或 串行通讯接口 (通常指COM接口),是采用串行通信方式的扩展接口串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。二、Android 的串口开发android 串口通信大部分使用的都是android_serialportApi开源的sdk,有编译好的so文件serial_pro原创 2022-03-24 16:43:31 · 1959 阅读 · 0 评论 -
Androd Gradle 使用技巧之模块依赖替换
背景我们在多模块项目开发过程中,会遇到这样的场景,工程里依赖了一个自己的或者其他同事的 aar 模块,有时候为了开发调试方便,经常会把 aar 改为本地源码依赖,开发完毕并提交的时候,会再修改回 aar 依赖,这样就会很不方便,开发流程图示如下:解决一开始我们通过在 app 的 build.gradle 里的 dependency 判断如果是需要本地依赖的 aar,就替换为 implementation project 依赖,伪代码如下:dependencies { if(enableLo原创 2022-03-18 14:42:46 · 444 阅读 · 0 评论 -
Activity状态保存与恢复
太久没更新了…业务怎么可以这么卷…Orz。之前没太明白视图在什么时候可以保存状态,在什么时候状态可以被恢复,想了想还是得琢磨琢磨源码,虽然干的活离Android越来越远,但毕竟老本行,还是需要花精力琢磨的。在不同的版本中,Activity保存状态的时机是不一样的,在Android 3之前,把Activity状态的保存是在onPause之前被调用onSaveInstanceState(ActivityThread#performPauseActivity),而在Android 9之前,把Activit.原创 2022-03-18 14:36:31 · 553 阅读 · 0 评论 -
Activity添加window过程
Activity的window之前说了window的工作过程,但是除了我们自己添加window,一些常见的含视图的组件(activity)或者弹窗(Dialog,Toast)也会在创建时添加window,接下来主要说说这几种情况下window的添加情况,首先看Activity的window添加过程。 之前说过Activity的创建过程,在这篇文章最后说过attach过程会与view的创建有关,这里先看attach方法final void attach(Context context, ActivityT原创 2022-03-17 15:34:59 · 347 阅读 · 0 评论 -
AMS字节码插桩
一直觉得字节码插桩是不可高攀的知识,最近工作不太忙,于是下决心去学习一下字节码插桩;打开我收藏了很久的文章开始学习,下面几个是我之前收藏的文章(收藏==学会)https://juejin.cn/post/6999646242125529096https://juejin.cn/post/6986848837797658637https://juejin.cn/post/6844904194445426702juejin.cn/post/696579…下面开始正题,就简单的实现一下在Test.j原创 2022-03-17 15:21:20 · 505 阅读 · 0 评论 -
开源分享:字节天花板级别Android Framework开发笔记,AMS、WMS全解析
1为什么要学Android Framework?想要成为一名优秀的Android开发,就需要有一个完备的知识体系,Android Framework 的知识是很重要的一个组成部分,他广泛的应用在各个领域。像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解。只有这样才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……另外 Framework 作为 Android 框架层,为 App 提供了众多 API原创 2022-03-08 16:44:05 · 786 阅读 · 0 评论