自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2016-01-27 15:26:23 1064

原创 Apk安装之谜

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

2024-04-28 08:15:00 590

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

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

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

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

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

2023-12-12 08:09:44 1069

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

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

2023-12-01 07:50:52 990

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

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

2023-11-29 23:19:46 1668

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

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

2023-10-10 23:18:23 379 3

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

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

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

原创 handler机制--Handler使用

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

2022-11-27 22:51:18 497

原创 handler机制--Message类型

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

2022-11-27 22:48:07 530

原创 handler机制--Message之旅

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

2022-11-27 22:47:18 276

原创 handler机制--Message之旅

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

2022-11-27 22:41:50 740

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

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

2022-11-25 10:01:43 367

原创 handler机制--handler概览

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

2022-11-25 09:51:17 282

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

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

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

原创 Activity系列--Activity跳转

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

2022-11-17 08:24:48 30324

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

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

2022-11-17 08:12:37 1807

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

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

2022-11-14 08:26:11 283

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

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

2022-11-14 08:05:39 910

原创 Activity系列--初识Activity

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

2022-11-13 22:07:06 1113

原创 Android轻量级Layout Inspector工具

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

2022-02-09 09:49:06 3051

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

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

2022-02-09 09:47:41 1520

原创 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 385

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

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

2022-02-09 09:33:50 816

原创 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 529

原创 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 1972

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

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

2022-02-09 09:21:53 328

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

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

2016-02-29 07:43:25 495

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

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

2016-01-26 10:38:30 339

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

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

2015-06-01 11:11:54 488

转载 hg clone abort:error

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

2012-03-31 11:52:14 1235

原创 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 2935 2

原创 android service与activity双向通信

前些日子在做音乐播放器的例子,在做的过程中要涉及到service 与activity之间的交互,于是乎就在网上搜罗例子,例子确实很多,但是涉及到他俩之间互相交互的例子就少了。于是乎决定把自己的例子写下来,与大家分享,有不足之处还请各位多多指教(这是我在csdn上的第一篇博文,谢谢各位支持)     service与activity之间通信肯定需要用到AIDL技术,关于它就不具体的说了,网上一大

2012-03-31 11:00:28 2984

空空如也

空空如也

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

TA关注的人

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