自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android:我为何要封装DialogFragment?

我为何要封装DialogFragment最近在重构项目代码,项目中创建对话框用的是Dialog,AlertDialog。但是官方推出了DialogFragment来代替Dialog。那我就去认真的了解下DialogFragment。DialogFragmentDialogFragment是在Android3.0的时候被引入的,从其名字可以很直观的看出它是一种基于Fragment的Dialog,可以用

2016-01-27 15:26:23 1077

原创 谈谈写文章的一些感想

用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章,技术文章也可以有温度。

2024-07-08 10:48:04 849

原创 Android zygote访谈录

本文以访谈的方式来带大家了解zygote进程,了解zygote进程是啥?它的作用是啥?它是如何一步一步“长大成人”的。

2024-07-04 10:21:18 953

原创 Android 大话binder通信

用故事的方式把binder通信的整个过程都描述出来,binder通信都经历了哪些节点,在这些节点上的数据有哪些变化,同时还对binder通信的关键细节进行介绍。通过本文您能对binder通信整体和细节都有一个全面的认识,比如*startActivity*方法到底都经历了哪些过程。

2024-06-28 17:19:46 916

原创 Android 大话binder通信 (下)

用故事的方式把binder通信的整个过程都描述出来,binder通信都经历了哪些节点,在这些节点上的数据有哪些变化,同时还对binder通信的关键细节进行介绍。通过本文您能对binder通信整体和细节都有一个全面的认识,比如*startActivity*方法到底都经历了哪些过程。

2024-06-24 10:39:49 610

原创 Android 大话binder通信 (上)

用故事的方式把binder通信的整个过程都描述出来,binder通信都经历了哪些节点,在这些节点上的数据有哪些变化,同时还对binder通信的关键细节进行介绍。通过本文您能对binder通信整体和细节都有一个全面的认识,比如*startActivity*方法到底都经历了哪些过程

2024-06-18 09:44:03 977

原创 Android ServiceManager和它的兄弟们

本篇文章同样采用自述和对话的方式,来介绍servicemanager、vndservicemanager、hwservicemanager 这三个系统native进程,通过本文您将了解到为什么要有vndservicemanager和hwservicemanager进程、以及它们在Android进程之间通信到底起了哪些作用?

2024-06-11 09:47:21 780

原创 Android vold (卷管理) 传记

本篇文章同样延续自述和对话的方式来介绍vold(卷管理进程),通过本文您将了解到它在Android系统中到底起了哪些作用?它是如何监听外部存储设备的热插拔事件?如何管理所有的卷?管理的卷到底有啥用?

2024-06-03 09:57:55 998

原创 Android存储系统成长记

您一定使用过Context的getFileStreamPath方法或者Environment的getExternalStoragePublicDirectory方法,甚至还有别的方法把数据存储到文件中,这些都是存储系统提供的服务,那本文从存储系统“成长”的角度,来揭开存储系统的秘密

2024-05-27 16:25:01 425

原创 Apk安装之谜

本文同样还是延续自述、对话这种轻松的方式,带您揭开apk安装的谜底,apk它到底是如何安装的

2024-04-28 08:15:00 645

原创 Android系统native进程之我是installd进程

这是Android系统进程系列的第五篇文章,本文同样以自述的方式带您了解installd进程,通过本文您将了解到linstalld进程为啥存在?以及在安装/卸载apk中发挥了哪些作用

2024-04-23 18:55:51 662 2

原创 Android帝国之日志系统--logd、logcat

本文以自述的方式来介绍logd进程,通过本文您将了解到logd进程存在的意义,以及日志系统的实现原理

2023-12-12 08:09:44 1295

原创 Android启动系列之属性服务的设计魅力

`属性服务`不管你有没有用过它、见过它,它都是存在的,并且在Android系统中非常的重要,本文通过故事的方式由浅入深的介绍了属性服务为啥使用`共享内存`和`socket通信`作为进程之间的通信方式,同时也由浅入深的介绍了属性服务为了做到更`快`、更`省内存`都做了哪些努力。

2023-12-01 07:50:52 1014

原创 Android启动系列之进程杀手--lmkd

本文以自述的方式来讲解lmkd进程,通过本文您将了解到lmkd进程在安卓系统中存在的意义,以及它是如何杀进程的

2023-11-29 23:19:46 1786

原创 Android启动系列之我是init进程

本文以自述的方式来介绍init进程,文中“我”指的是init进程,并且还穿插了对话。以这种方式来讲解技术主要的目的是希望大家能以一种轻松、简单、不枯燥的方式来了解init进程。通过本文希望您可以了解init进程是啥?它的作用有哪些?它在Android中的重要性。

2023-10-10 23:18:23 451 3

原创 view系列--Window,PhoneWindow,DecorView相关类

从这节起开始介绍view系列的文章,先从介绍Window,PhoneWindow相关类开始。

2022-12-19 22:10:53 392 1

原创 handler机制--Handler使用

到此关于Handler的介绍就结束了,关于handler机制系列的文章也介绍完了,欢迎关注其他系列文章。

2022-11-27 22:51:18 514

原创 handler机制--Message类型

到此Message的类型就介绍完毕,每种Message都有自己适用的场景,大家可以根据需要来使用相应的Message。

2022-11-27 22:48:07 555

原创 handler机制--Message之旅

到此Message从“诞生”,发送,收到,处理,回收 这五个过程就分析完毕。但是Message之旅却没有结束,它还会不断的重复上面的过程,因为Looper.loop方法它是一个死循环,它还会不断的从MessageQueue中取Message处理Message。也正因为Looper不断的执行着取消息/等待消息,处理消息这样的循环,ActivityThread的main方法才会不断的能循环起来,最终一个app才能运行起来。阻塞/唤醒本质。

2022-11-27 22:47:18 287

原创 handler机制--Message之旅

到此Message从“诞生”,发送,收到,处理,回收 这五个过程就分析完毕。但是Message之旅却没有结束,它还会不断的重复上面的过程,因为Looper.loop方法它是一个死循环,它还会不断的从MessageQueue中取Message处理Message。也正因为Looper不断的执行着取消息/等待消息,处理消息这样的循环,ActivityThread的main方法才会不断的能循环起来,最终一个app才能运行起来。阻塞/唤醒本质。

2022-11-27 22:41:50 766

原创 handler机制--让线程变为“永动机”

下面的文件属于android s那我们就分别从:Looper.prepare()和Looper.loop()这两个方法作为分析起点来进行分析让线程变为“永动机”可以分为两个步骤:初始化Looper对象,并且把他放入ThreadLocal中,放入ThreadLocal的主要作用就是:为了能在当前线程的任何代码处非常方便的获取到当前线程”绑定“的Looper。初始化MessageQueue对象,它与上面初始化的Looper对象是一对一关系。

2022-11-25 10:01:43 407

原创 handler机制--handler概览

本节主要介绍了handler的产生背景和handler的原理,这节只是一个概览,handler的知识是很多的,在后面的章节中会一一介绍,下面用一张图来做一个总结。

2022-11-25 09:51:17 297

原创 Activity系列--Activity启动-源码分析

Activity启动源码分析的整个过程就结束了,更多的总结内容可以看上面的原理.

2022-11-17 08:38:57 13943 1

原创 Activity系列--Activity跳转

本节介绍了Activity的隐示和显示跳转;跳转到Activity时候传递数据给Activity;目标Activity返回数据给启动Actiivty;最后介绍了两个Activity跳转的时候 生命周期的变化。

2022-11-17 08:24:48 37329

原创 Activity系列--Activity界面状态数据保存恢复-源码分析

Activity界面状态保存恢复这机制,android底层封装了一套完美的框架,让我们不需要关心底层的细节,让我们使用的时候能有多简单就有多简单,比如我们想保存和恢复Activity层面的数据,那就重写Activity的onSaveInstanceState和onRestoreInstanceState方法,比如我们想对自定义view,进行保存和恢复操作,同样也只需要重写onSaveInstanceState和onRestoreInstanceState方法即可。这就是框架的魅力所在吧。

2022-11-17 08:12:37 1876

原创 Activity系列--Activity界面状态保存恢复

onSaveInstanceState,onRestoreInstanceState这两个回调方法可以做到保存恢复界面状态,但是这种机制只可以用来保存轻量级的数据,涉及到大量的数据的时候不建议使用这中方式,而是使用ViewModel类来进行。

2022-11-14 08:26:11 299

原创 Activity系列--Activity生命周期

这节介绍了Activity的生命周期及Activity不同的状态和状态对应的回调方法,以及不同状态的切换。并且介绍了影响Activity状态变更的情况。还介绍了前台进程,失去焦点的后台进程和不可见后台进程,以及它们与被系统终止的可能性。最后介绍了lifecycle组件,强烈建议大家使用这个组件,不要在Activity里面写过多的逻辑(能作为一个模块独立出来就尽量独立出来)。

2022-11-14 08:05:39 1045

原创 Activity系列--初识Activity

这一节主要是带大家初识Activity,大家是不是有这样一种感觉:Activity的使用确实很简单。在使用Activity的时候,开发者只需要在继承Activity,在Activity的onCreate方法中实现自己的细节,关于onCreate方法什么时候调用这都不需要开发者关心(只需要关心自己的业务逻辑即可),onCreate方法肯定会被调用的开发者就放心吧,这或许就是框架(framework)的魅力所在,让使用者只需要关心自己的事情即可,剩下的就按框架制定的规则来实现。

2022-11-13 22:07:06 1146

原创 Android轻量级Layout Inspector工具

效果图若想使用该工具,请点我为什么要做这个工具如果有更好的轮子用,谁愿意造轮子。在21年年初的时候,我被调到公司的另外一个项目,这个项目有几个特点:历史非常的悠久,使用的技术落后,项目工程复杂,代码量巨大,界面布局层次特别深。这么庞大的项目对于我这个“新人”来说,找个功能的实现,或者找某个view的点击事件是在哪实现的,或者某个view所属的layout是啥等等 都很困难。通过阅读项目的源码来找具体功能点是可行的(比如找某个view的点击事件在哪,大致步骤是先找到Activity进而找到布局l

2022-02-09 09:49:06 3140

原创 ReplaceMethod(对调用的方法进行替换的工具)

ReplaceMethod(对调用的方法进行替换的工具)用它能做什么ReplaceMethod: 在编译阶段利用ASM对方法进行替换的工具。 用它可以对调用的方法进行替换,比如下面的一些例子:对view.SetOnclickListener方法进行替换。比如:代码中的所有的view.setOnClickListener方法最终被下面的方法替换public static void setOnClickListener(View view, View.OnClickListener clickLi

2022-02-09 09:47:41 1562

原创 Android底层:通熟易懂的分析binder--4.ServiceManager

本篇内容1.ServiceManager的作用2.启动servicemanager进程3.ServiceManager的准备工作4.注册服务5.获取服务6.总结以下代码的分析是基于7.0.0代码分析的1.ServiceManager的作用世间的万事万物都是有因果关系的,事物不会凭白无故的产生,它总是有缘由的。只有我们弄清楚缘由才能更好的理解事物。ServiceManager也是如此,为啥android中要有它呢?它肯定是来解决某类问题的,那我们来看下存在什么样的问题?再来看下Servic

2022-02-09 09:34:53 409

原创 Android底层:通熟易懂的分析binder--3. 探究binder全流程通信之回复篇

##​ 前言Android底层:通熟易懂的分析binder–3. 探究binder全流程通信之请求篇已经把请求流程分析完毕了,接下来分析回复流程。本篇内容方法调用栈收到回复数据并发送回复数据到达driver层server收尾工作client收到回复数据全流程总结1.方法调用栈在分析回复流程之前需要把请求流程后,各个环节现在所处的方法调用栈讲清楚,这样可以作为我们后面分析的基础。分别用clientInvokeStack(client进程方法调用栈),serverInvokeStac

2022-02-09 09:33:50 853

原创 Android底层:通熟易懂的分析binder--3. 探究binder全流程通信之请求篇

前言本系列文章我们来探究下binder全流程通信,这里的全流程既指请求binder服务和binder服务返回结果的过程;又指整个通信过程贯穿app,framework,jni,native,driver这五层。在讲解之前大家可以看下 Android底层:通熟易懂的分析binder–2. binder进程通信协议及“记录链路”结构体 这篇文章,它是本系列文章的基础。我会把binder通信流程划分为请求和回复两个阶段,每个阶段都会贯穿从app到driver这五层。下面是这个系列的所有文章:探究binde

2022-02-09 09:28:17 537

原创 Android底层:通熟易懂的分析binder--2. binder进程通信协议及“记录链路”结构体

前言binder的准备工作主要介绍了binder进程通信之前需要做的准备工作有哪些,既然binder准备工作做好了,那下一步就是通信了,在讲解通信之前,我希望先把通信的基础知识讲清楚,比如进程与driver层之间的通信协议是啥?binder_node,binder_ref,binder_thread,binder_proc这些东西到底都是啥?在通信过程中起啥作用?Binder,BinderProxy,BpBinder,BBinder又是啥?只有把这些基础知识了解清楚,对于后面的内容理解才能胸有成竹。本篇

2022-02-09 09:23:09 2016

原创 Android底层:通熟易懂分析binder:1.binder准备工作

写binder的初衷提起binder,应该会有很多人说,binder这都已经多么老的技术了,并且分析binder的文章是一搜一大堆,你这完全没必要写binder方面的文章啊!我其实对于这种观点不以为然,说下我的理由吧:对自己看过的,学过的binder知识需要有一个总结,这个总结是非常必要的,不信大家可以想想,若没有总结,以前学过的知识是不是已经忘记了很多,没有总结那你学过的知识就是零散的,不成系统。即时binder很老了,依然会有很多人不了解,有可能你会说,了解它有啥用。我想说binder是and

2022-02-09 09:21:53 341

原创 Android:我为何要封装DialogFragment?

我为何要封装DialogFragment最近在重构项目代码,项目中创建对话框用的是Dialog,AlertDialog。但是官方推出了DialogFragment来代替Dialog。那我就去认真的了解下DialogFragment。DialogFragmentDialogFragment是在Android3.0的时候被引入的,从其名字可以很直观的看出它是一种基于Fragment的Dialog,可以用

2016-02-29 07:43:25 512

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-01-26 10:38:30 343

转载 6个值得推荐的Android开源框架简介

6个值得推荐的Android开源框架简介虽然我们在做app的时候并不一定用到框架,但是一些好框架的思想是非常有学习价值的1、volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载; (2)  网络请求的排序(scheduling) (3)  网络请

2015-06-01 11:11:54 493

转载 hg clone abort:error

链接处 http://zhujianjia.iteye.com/blog/1246422

2012-03-31 11:52:14 1240

原创 android Error generating final archive: java.io.FileNotFoundException错误

昨天下午从svn服务器上down下工程来在自己eclipse上build  老是报下面的错误Error generating final archive: java.io.FileNotFoundException: D:\work\xxxx\bin\classes\resources.ap_ does not existxxxx    Unknown Android Packaging Pr

2012-03-31 11:38:09 2956 2

空空如也

空空如也

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

TA关注的人

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