自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 android里面的Activity体系结构(1)_ActivityDisplay/ActivityStack/TaskRecord/ActivityRecord

本文主要从3个方面来介绍这几个类之间的关系,先从整体关系图,对4个类的关系有个大概的了解,然后通过dumpsys命令,来验证这种关系;然后从类定义的角度来看,4个类是如何互相包含的;最后从Activity启动的流程过程来看4个类是如何关联上来的。通过阅读本文,能对ActivityDisplay/ActivityStack/TaskRecord/ActivityRecord的关系有个整体的认识和理解1.整体关系图如下通过adb shell dumpsys activity activities 命令可

2020-09-19 14:45:26 1847

原创 android Back键处理流程及Log分析

back

2020-09-30 22:40:20 2044

原创 android Home键响应流程Log分析

home

2020-09-30 21:08:51 875 3

原创 android里面的Activity体系结构(4)_View创建及显示流程

先看一下Activity界面的整体结构其中有几个很关键的类PhoneWindow继承自Window类,代表andorid特有的window,window的实现类作为顶层View添加到windowmanager里面,Activity类里面的setContentView方法调用的PhoneWindow的setContentView来/** 1. Abstract base class for a top-level window look and behavior policy. An 2

2020-09-23 22:49:32 419

原创 android里面的Activity体系结构(2)_Activity lifecycle实现原理说明

1.简介ClientLifecycleManager是管理Activity lifecycle的,在ActivityTaskManagerService里面提供getLifecycleManager来获取此对象,其中mLifecycleManager是在ActivityTaskManagerService的构造方法里面初始化的本文基于Android 10的源代码来分析说明 ClientLifecycleManager getLifecycleManager() { return

2020-09-22 22:39:13 921

原创 android里面的Activity体系结构(3)_ActivityRecord和Activity状态变化分析说明

ActivityRecord是运行在system_server进程里面的,Activity是运行在应用进程里面的,虽然内部有个变量ActivityInfo info来代表Activity的所有信息,但是状态的变化不是和Activity完全一致,Activity的状态变化是由ActivityRecord状态变化来影响并改变的1.ActivityRecord 状态在ActivityRecord里面有个内部变化ActivityState mState,每次状态有变化的时候,都会调用setState方法来设置,

2020-09-20 00:29:47 1778

原创 Window10上在wsl2环境中编译android 10

wsl2是适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销1.wsl2 安装详细安装过程见官方说明文档,对win10 有版本要求:运行 Windows 10(已更新到版本 2004 或更高版本,对于 ARM64 系统则是内部版本 19041)具体安装过程参考:wsl2的安装说明安装Linux系统,打开 Microsoft Store,并选择你偏好的 Linux

2020-09-17 23:53:49 1436

原创 Activity 启动流程log分析

为了方便跟踪启动过程中的相关流程,打开了如下开关以及添加了如下Log,1、添加Log打印1.1、2个setState()其中ActivityRecord运行在system_server进程中,ActivityThread运行在App进程中,方法可以完整的反映整个Activity的变化过程,// 在ActivityRecord.java文件中void setState(ActivityState state, String reason) { if (DEBUG_STATES) Slog.v

2020-09-17 23:34:19 4083

原创 关于createPackageContext方法的一些理解

最近在项目过程中遇到这个一个问题:在ActivityManagerService里面的getContentProvider出现SecurityException异常,callingPackage和uid不一致 public final ContentProviderHolder getContentProvider( IApplicationThread caller, String callingPackage, String name, int userId,

2020-09-07 21:35:21 2845

原创 四大组件Debug--Activity

关于Activity的debug,android里面已经提供了2个debug文件frameworks/base/services/core/java/com/android/server/am/ActivityManagerDebugConfig.javaframeworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerDebugConfig.java1. ActivityManagerDebugConfig里

2020-09-07 20:50:52 755

原创 android系统设置状态变化debug

如在OTA升级后应用未更新问题分析文章中介绍,当怀疑和系统设置里面的system/global/secure里面的设置项有关联的时候,可以打开如下:DEBUG点:把DEBUG开关设置为true源代码里面已经有现成的开关:除了在query/udpate/delete/insert方法都有debug,具体值的地方也有打印,以global为例子 private boolean updateGlobalSetting(String name, String value, String tag,

2020-09-07 00:02:56 235

原创 SharedPreferences和SQLite数据变化监听

android 提供了如下保存数据和文件的方法https://developer.android.google.cn/guide/topics/data/data-storage?hl=zh-cn本文主要介绍SharedPreferences和SQLite1.SharedPreferencesDEBUG点:commitToMemory方法的mapToWriteToDisk.put(k, v)前后,可以直接打印变化的值下面简单说明一下debug的来源,此类没有现成的debug点,类里面的debu

2020-09-06 23:48:08 1214

原创 android找到当前显示界面java类

平时在进行整机开发的过程中,遇到不熟悉的模块或三方应用,可以通过如下方法找到当前界面显示java文件1.通过monitor工具工具在android sdk里面,目录如下:sdk/tools/monitor启动后界面如下a)查看应用包名和UI界面,找到界面相关的View id或string idb)然后通过grep命令,在源代码里面找到对文件应的布局文件//以字符串为例,因为布局文件id很多地方都是共用的,很难找到是具体哪个地方在用chadm@chadm-HP-ZHAN-66-Pro-

2020-09-06 23:06:46 916

空空如也

空空如也

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

TA关注的人

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