自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android开机界面分析

2020-04-13 16:12:29 205

原创 zygote创建app分析

一 zygote创建应用二 zygote创建应用流程

2020-04-13 15:27:01 254

原创 zygote剖析与system server启动

一 zygote启动分析zygote创建system server的主要方法

2020-04-13 15:15:54 150

原创 Android系统基本服务

虚拟机创建和第一个java程序引导Dalvik虚拟机基本配置zygote启动流程

2020-04-13 15:02:51 187

原创 Android ServiceManager分析

一 作用1 服务进程,是Android系统中的核心服务之一2 系统服务管理:管理系统和应用向系统添加的服务3 查询获取服务管理:响应client请求并返回相应的服务二 理解ServiceManager1 根据init脚本定义:如果该服务连续几次异常退出,系统会重启2 如果该服务重启,那么他将会重启media,zygote,surfaceflinger等服务3 系统...

2020-04-13 14:51:15 810 1

原创 Android systemserver分析

一 Android系统服务二 system server启动过程

2020-04-13 12:33:54 126

原创 Android packageManagerService分析

一 作用1 管理系统的jar包和apk,负责系统权限2 负责程序的安装,卸载,更新,解析3 对于其他应用和服务提供安装卸载服务二 PMS涉及到的模块三 PMS的启动过程1 和installd进行连接,进行安装卸载操作2 创建PackageHandler线程,处理外部安装卸载请求3 处理系统权限相关的文件/system/etc/perssion/*.xml...

2020-04-13 11:49:11 362

原创 C++常见运算符

1、A.B则A为对象或者结构体;2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;4、:一般用来表示继承;...

2020-04-07 15:29:06 206

原创 Android系统异常问题处理流程(死机,重启等)

1 addr2line工具作用:把native的出错堆栈信息对应到代码的行数通过find . -name *addr2line来搜索这个工具查看出错的堆栈信息,xx.so库出问题,然后分析这个库的堆栈信息根据出错的二进制地址和出错的库名就可以使用addr2line找出错误的行数命令:addr2line /xx.so 0015b6d5然后回车然后继续看错误堆栈...

2020-03-25 14:35:37 1082 1

原创 简述Android framework之AMS、PMS、WMS

服务端主要是ActivityManagerService(AMS), WindowManagerService(WMS),PackageM anerService(PMS)AMS 主要用于管理所有应用程序的Activity WMS 管理各个窗口,隐藏,显示等 PMS 用来管理跟踪所有应用APK,安装,解析,控制权限等.还有用来处理触摸消息的两个类KeyInputQueue和Input...

2020-03-21 15:12:09 5332 1

原创 理解PackageManager

PackageManager是Android为管理应用程序安装包(apk)提供的包管理器它的功能如下:1 权限处理,包括对系统和应用定义的Permission和Permission Group信息的添加、删除、查询和检查2 包处理,包括扫描并安装和卸载apk包,查询包的UID、GID、包名、系统默认程序等信息3 比较两个包的signatures信息是否相同4 查询Activi...

2020-03-21 11:09:54 1260

原创 WMS的重要成员以及Window添加和删除过程

1 mPolicy:WindowManagerPolicymPolicy是WindowManagerPolicy类型的变量。WindowManagerPolicy是窗口管理策略的接口类,用来定义一个窗口策略所要遵循的通用规范,并提供了WindowManager所有的特定的UI行为。它的具体实现类为PhoneWindowManager,这个实现类在WMS创建时被调用。 WMP运行定制窗口层级和特...

2020-03-20 18:17:38 298

原创 理解WindowManagerService

一 WMS的职责1 窗口管理WMS是窗口的管理者,它复杂窗口的启动、添加和删除,另外窗口的大小和层级也是由WMS进行管理的窗口管理的核心成员有DisplayContent、WindowToken和WindowState2 窗口动画窗口间进行切换时,使用窗口动画更炫一些,窗口动画由WMS的动画子系统来负责,动画子系统的管理者为WindowAnimator3 输入系统的中转站...

2020-03-20 12:14:59 131

原创 Android系统启动流程

一 init 进程启动过程 init0进程是Android系统中用户空间的第一个进程,进程号为1,它的职责包括创建Zygote(孵化器)和属性服务等。init进程是由多个源文件共同组成的,这些文件位于system/core/init中按下启动电源时,系统启动会加载引导程序,引导程序又启动linux内核,在Linux内核加载完成后,第一件事就是启动init进程 ...

2020-03-18 18:21:21 117

原创 Android系统架构浅析

2020-03-18 11:53:01 79

原创 AMS重要的数据结构

ActivityRecord内部存储了activity所有信息,包括AMS的引用、AndroidManifes节点信息、activity状态、activity资源信息和activity进程相关信息,其中含有该AcitivityRecord所在的TaskRecord,这就将ActivityRecord和TaskRecord关联在一起了 名称 类型 ...

2020-03-16 23:40:59 378

原创 Android开发书籍推荐

入门级:第一行代码Android编程权威指南进阶:《Android开发艺术探索》《Android进阶解密》《Android群英传》《Android进阶之光》源码方面:《Android源码设计模式》《深入理解Android内核设计思想》《深入理解Android》卷1,2,3《Android系统源代码情景分析》...

2020-03-16 22:48:12 263

原创 深入理解Android AMS

在activity的启动过程中会调用Instrumentation的execStartActivity方法:涉及代码:Instrumentation.java core\java\android\app\Instrumentation.java这里调用到了ActivityManager的getService方法:ActivityTaskManager.java c...

2020-03-16 21:22:34 484

原创 Android的消息机制

MessageQueue: 消息队列,消息的存储单元,它的内部存储了一组消息,以队列的形式对外提供插入和删除的工作。虽然叫消息队列,但是它的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息列表。Looper:消息循环,由于MessageQueue只是一个消息的存储单元,它不能处理消息,而Looper就填补了这个功能,Looper会以无限循环的形式去查找是否有新消息,如果有的话就...

2020-03-16 11:28:30 99

原创 Activity的Flags

在使用标记位的时候,要注意有些标记位是系统内部使用的,应用程序不需要去手动设置这些标记位以防出现问题。FLAG_ACTIVITY_NEW_TASK这个标记位的作用是为Activity指定“singleTask”启动模式,其效果和在XML中指定该启动模式相同。FLAG_ACTIVITY_SINGLE_TOP这个标记位的作用是为Activity指定“singleTop”启动模式,其效果和在XML中...

2020-03-15 17:29:24 156

原创 Android开发常用命令

adb shell dumpsys activity:获取activity信息

2020-03-15 17:16:20 77

原创 理解TaskAffinity

TaskAffinity,可以翻译为任务相关性。这个参数标识了一个Activity所需要的任务栈的名字,默认情况下,所有Activity所需的任务栈的名字为应用的包名。当然,我们可以为每个Activity都单独指定TaskAffinity属性,这个属性值必须不能和包名相同,否则就相当于没有指定。TaskAffinity属性主要和singleTask启动模式或者allowTaskReparent...

2020-03-15 17:07:05 322

转载 Activity onNewIntent详解

onNewIntent() 的触发时间:onNewIntent.png如图所示,onCreate() 和 onNewIntent() 不会被同时调用。官方文档:onNewIntent·added in API level 1·void onNewIntent (Intent intent)·This is called for activities that set la...

2020-03-15 16:44:24 246

原创 Android 面试题之activity的启动流程

简要说明:启动activity的请求会有Instrumentation来处理,然后它通过Binder向AMS发请求,AMS内部维护这一个ActivityStack并负责栈内的activity的状态同步,AMS通过ActivityThread去同步activity的状态从而完成生命周期方法的调用...

2020-03-15 14:57:33 767

原创 Activity生命周期剖析(一)

Activity生命周期切换的过程:第一次启动activityoncreate ⇒ onstart ⇒ onresume activity处于运行状态。activity被覆盖一部分(类似dialog),然后activity全部显示执行onPause,之后执行onResume按Home键,隐藏之后重新显示onPause ⇒ onStop ⇒ 重新显示 ⇒ onRestart ...

2020-03-15 14:54:32 129

原创 Android内存泄漏工具之MAT

一 准备MAT工具地址:http://www.eclipse.org/mat/downloads.php对于Eclipse来说,MAT也有插件版,但是不建议使用插件版,因为独立版使用起来更加方便,即使不安装Eclipse也可以正常使用,当然前提是有内存分析后的hprof文件二 如何导出hprof文件点击profile app-->dump java heap---expor...

2020-03-13 17:42:19 93

原创 Android性能优化

OOM:过多的使用内存导致程序内存溢出ANR:过多的使用CPU资源,一般指做大量的耗时任务,导致手机变得卡顿甚至出现程序无法响应的情况优化的内容如下:...

2020-03-13 11:39:05 117

原创 Android之ANR分析

一 ANR简介ANR和crash的区别:ANR不一定是由于程序的异常错误导致的,一般是应用处理长时间没有响应导致主线程不能处理下一件事情ANR(Application not responding)即应用无响应,应用发生anr的几种类型1 KeyDispatchTimeout:最常见的anr类型是对输入事件5s内无响应,比如按键或触摸事件在此时间内无响应2 Broadcast...

2020-03-11 10:33:31 2269 1

转载 private 访问权限和protect 访问权限, 子类继承父类的时候注意点(面试题)

如果是private的话, 子类是不可以直接使用的必须通过get方法去获取如果是protect的话,子类可以直接获取这个变量class Fu{ protected String number; private String name; public String getNumber() { return number; }}...

2020-03-10 16:14:15 778 1

转载 list set map的区别,去重用哪一个?(面试题)

list set map的区别,去重用哪一个?(面试题)插入有序null重复排序索引/增删键值对Collection结构图collection里面有什么子类?list和set是实现了collection接口的List:1.可以允许重复的对象。2.可以插入多个null元素。3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。...

2020-03-10 16:12:03 357

转载 Java中静态变量和实例变量的区别

静态变量属于类的级别,而实例变量属于对象的级别。主要区别有两点:1,存放位置不同  类变量随着类的加载存在于方法区中,实例变量随着对象的对象的建立存在于堆内存中。2,生命周期不同  类变量的生命周期最长,随着类的加载而加载,随着类的消失而消失,  实例变量随着对象的消失而消失。静态的使用注意事项:1,静态方法只能访问静态成员(包括成员变量和成员方法),不能访问非静态...

2020-03-10 15:52:10 138

原创 Activity托管UI fragment的两种方式

1 在activity布局中添加fragment即布局fragment,在activity布局中添加fragment,等同于将fragment及其视图与activity的视图绑定在一起,并且在activity的生命周期过程中,无法替换fragment视图,这种方式简单但不灵活2 在activity代码中添加fragment动态控制fragment的方式,这种方式可以随时添加,移除,替换...

2020-03-10 11:48:59 400

原创 Fragment的生周期

fragment生命周期与activity生命周期的一个关键区别是fragment的生命周期方法由托管activity而不是操作系统调用。操作系统不关心activity用来管理视图的fragment。fragment的使用是activity内部的事情...

2020-03-09 22:15:25 56

原创 Android调试中定位问题的方法

1 记录堆栈跟着的诊断性日志Log.d("hcx", "onClick: ",new Throwable());//打一个堆栈信息2 利用调试器设置断点调试3 Android Lint静态分析器,能深入检查代码,找出编译器无法发现的问题...

2020-03-09 17:47:09 269

原创 Activity的状态图解

可能出现部分可见暂停状态的场景:在一个activity之上启动带透明背景视图或者小于屏幕尺寸视图的新activity时可能出现完全可见暂停状态的场景:应用多窗口模式下,当前activity在一个窗口完全可见,而用户在不包含当前activity的另一个窗口操作时...

2020-03-09 17:03:41 163

原创 Android与MVC设计模式

MVC设计模式表明,应用的任何对象,归根结底都属于模型对象、视图对象、及控制器对象中的一种模型对象存储着应用的数据和业务逻辑。模型类通常用来映射与应用相关的一些事物,如用户、商店里的商品、服务器上面的视频或者一段电视节目。模型对象不关心用户界面,它为存储和管理应用数据而生。android应用里,模型类通常就是我们创建的定制类,应用的全部模型对象组成了模型层视图对象知道如何在屏幕上绘制自...

2020-03-09 16:19:58 164

原创 Activity的启动模式之singleInstance模式

activity会启动一个新的任务栈来管理这个activity,singleInstance模式加载activity时,无聊从哪个任务栈中启动该activity,只会创建一个activity实例,并且会使用一个全新的任务栈来装载该activity实例与singleTask区别:单独为该activity启动了一个新的任务栈来管理点击第一个按钮点击第二个按钮...

2020-03-09 12:22:20 9257

原创 Activity的启动模式之singleTask模式

Activity在整个应用程序中只存在一个实例,每次启动该activity时,系统首先会检查栈中是否存在该活动的实例,如果发现已经存在则直接使用该实例,并将当前activity之上的所有activity出栈,如果没有发现则创建一个新的实例点击mainActivity按钮,再点击BAty按钮 ,mainActivity只存在一个,而且点击back键后直接退出...

2020-03-09 12:15:36 470

原创 Activity的启动模式之singleTop模式

当启动的activity以及位于栈顶时,则直接使用它不创建新的实例,如果启动的activity没有位于栈顶时,则创建一个新的实例位于栈顶实例:这个是mainActivityBActivity运行结果启动mainActivity时,只有一个实例...

2020-03-09 12:08:01 723

原创 Activity的启动模式之standard模式

standard模式:standard是activity默认的启动模式,不指定启动模式时,所有activity使用的都是standard模式每当启动一个新的activity,它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的activity,系统不会判断该activity在栈中是否存在,每次都会创建一个新的实例看看下面的实例来理解standard模式运...

2020-03-09 09:36:15 1398

嵌入式,单片机arm

关于arm知识点的基础入门讲解,对于想做嵌入式开发的同学来说会很不错哦

2015-05-04

IO与线程进程

这是我在华清远见培训的积累的知识点,希望大家可以用的上

2015-05-04

华清远见内部培训资料linux与c高级

这是我在华清远见培训时候老师的讲解资料,希望与大家分享

2015-05-04

空空如也

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

TA关注的人

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