Android系统源码分析--Zygote和SystemServer启动过程
按计划本来从这章开始写四大组件的启动过程的,但是看看源码结构发现为了说的更明白还是先写一点系统framework层启动的内容,帮助理解四大组件的启动以及管理过程。我们知道四大组件管理是通过一些服务以及线程实现的,所以先把一些基本概念弄清楚比较好,比如AMS(ActivityManagerService)、PMS(PackageManagerService)等系统服务的作用以及调用方式,了解这些之后再看四大组件相对容易些,因此我们本章先介绍系统启动、部分系统服务的作用。 Zygote启动过程Zygote是一个孕育器,Android系统所有的应用进程以及系统服务SystemServer都是有Zygote进程孕育(fork)而生的,因此Zygote在Android启动过程中起着决定作用。Zygote的启动是从它的main函数开始的,因此我们从这个函数开始分析。整个过程看下面的时序图。 下面我们开始根据时序图进行分析。 Step...
IntelliJ IDEA导入Android源码
我们知道在Windows系统下阅读源码利器是Source Insight,但是没有Mac版本,阅读源码一直是个问题,之前我写过关于阅读源码神器的Understand,但是如果项目过大则很慢,所以也不能用来阅读Android系统源码,在网上也查过Sublime text配置ctag,但是相对来说也是不方便,后来使用Visual Studio Code和Sublime text相差不多,最后想到用IntelliJ IDEA来阅读源码,如果直接导入则会分为很多module。最近从网上看到可以导入IntelliJ IDEA软件,所以给大家分享一下。本教程基于Mac OS X 10.12。Android系统版本为:7.1.2_r11(7.1.2最终版)。先介绍方法,后面会给出各种问题解决方案。 生成导入idea或者eclipse需要的文件: 1.首先是idea和eclipse导入项目需要的文件 123.classpath (Eclipse)android.ipr (IntelliJ / Android Studio)android.iml (IntelliJ / Android...
墨香带你学Launcher之(八)- 加载Icon、设置壁纸
上一章墨香带你学Launcher之(七)- 小部件的加载、添加以及大小调节介绍了小部件的加载以及添加过程,基于我的计划对于Launcher的讲解基本要完成了,因此本篇是我对Launcher讲解的最后一部分,计划了很久,因为时间的问题一直没有写,今天趁着有空写完。写了八篇,不多,Launcher里面还有很多东西,有兴趣的可以自己继续研究,看完这些主要的其他都是问题了,有什么需要了解的可以留言。最新版的Launcher代码我已经放到github上,想看的自己可以去下载。 加载Icon对于Icon的操作其实主要是加载、更新以及删除,加载主要是启动Launcher、安装应用,更新是在更新应用时更新Icon、删除是卸载应用时会删除Icon,因此我们可以从这几方面分析Icon的处理。 Launcher启动时Icon加载Launcher的数据加载流程我在第二篇墨香带你学Launcher之(二)-...
开源算法集合
本文主要是收集一些大的公司开源的算法项目,以方便我们开发使用。包括:guetzli(图像算法)、brotli(压缩算法)、face_classification(人脸分类以及情感算法)。 Google【guetzli】 源码地址:guetzli 简介:Google 又开源了,这次开源了一款图像算法工具 Guetzli。Guetzli,在瑞士德语中是“cookie(曲奇)”的意思,是一个针对数码图像和网页图像的 JPEG 编码器,能够通过产生更小的 JPEG 文件来达到更快的在线体验,并且同时保持与当前浏览器,图像处理应用和 JPEG 标准的兼容性。Google 称 Guetzli 创建高质量的 JPEG 图像文件的大小比当前的压缩方法要再小 35%。 简介来源:开源中国:Google 开源图像算法工具...
常用UI框架汇总
本章主要是对常用的UI框架进行整理,帮助大家更方便的查找资源。主要包括:ViewPager、RecyclerView、Toast、Notification、CoordinatorLayout、Animation、界面切换、日历、高斯模糊、菜单、图片选择器、切换主题等。 UIViewPager YViewPagerDemoYViewPagerDemo InfiniteCycleViewPagerInfiniteCycleViewPager InfiniteCycleViewPagerXamarinInfiniteCycleViewPagerXamarin ViewPagerCardsViewPagerCards ViewpagerTransitionViewpagerTransition CardStackView CardStackViewCardStackView FlippableStackViewFlippableStackView ...
Android 常用框架集合
本章主要是对一下常用的框架进行整理,包括框架的源码地址以及一些比较详细的博客讲解,帮助大家更方便的查找资源。 网络1.android-async-http:一个比较老的网络框架项目,虽然已经很少使用了,但是可以学习一下里面的写作方法。 源码地址:android-async-http 详解: 官方网址 快速Android开发系列网络篇之Android-Async-Http android-async-http框架库使用基础 2.retrofit:retrofit是由square开源组织开源的一款非常流行的网络请求框架,现在使用已经非常广泛。 源码地址:retrofit 详解: 官方详解 Retrofit用法详解 Retrofit分析-漂亮的解耦套路 Retrofit 2.0:有史以来最大的改进 Android 手把手教你使用Retrofit2 3.okhttp:okhttp也是由square开源组织开源的一款网络底层封装库,上面介绍的Retrofit也是基于此库进行的二次封装。 源码地址:okhttp 详解: 官方详解 如何更高效地使用...
墨香带你学Launcher之(七)- 小部件的加载、添加以及大小调节
上一章墨香带你学Launcher之(六)- 拖拽我们介绍了Launcher的拖拽过程,涉及到的范围比较广,包括图标的拖拽,桌面上CellLayout的拖拽,小部件的拖拽,以及跨不同部件的拖拽,设计思想非常巧妙,不过整个流程相对也比较好掌握,只要跟着上一章的流程自己多跟踪几遍基本就熟悉了。按照计划本章我们继续学习Launcher的Widget的加载、添加以及Widget的大小调节。 Widget的数据加载其实我们在第二章墨香带你学Launcher之(二)-数据加载流程介绍过Widget数据的加载,相对只是简单的做了介绍,下面我们稍微讲的详细点。 我们知道Widget的数据加载开始在LauncherModel中的updateWidgetsModel方法中,我们看下代码: 12345678void updateWidgetsModel(boolean refresh) { PackageManager packageManager = mApp.getContext().getPackageManager(); final...
墨香带你学Launcher之(六)- 拖拽
上一章墨香带你学Launcher之(五)-...