Android开发两年,从头开始学Android(一)

从事Android开发已经两年多了,最近项目上特别清闲,刚开始时在闲暇的时候都不知道干嘛,整天混日子。有一天突然有个以前同学找到我,说要我帮忙做一个Android的需求,就是在后台截屏(涉及到服务以及跨进程)、页面控件监控(也是在后台)、后台服务保活(类似QQ后台);突然发现自己对这行毫无所知,像一个傻子一样。认真的回顾了这两年的开发历程,学到的那些东西差不多都已经过时了,只能满足简单的UI搭建,几乎可以说是毫无所成了。这对一名程序员来说是非常恐怖的,在技术日新的发展中如果还保持这样的工作态度,那么很快就要被淘汰了。于是打算从头开始学Android,好好打好基础,不再好高骛远的去学什么人工智能什么Python了,先掌控好手头的技术;

重温Android最开始的历程:从下面这张图开始

最开始学Android的时候这张图是死记硬背下来的,也不知道要记下来干嘛(为了找工作吧),现在回过头来看慢慢的有了自己的一些认识;

首先Android的架构分为四层 内核层(Linux内核):选择Linux的原因就是因为他开源,以及适合嵌入式开发;我们可以把手机想象成一大块电路板(事实上它既是一块电路板,只是比较精细,复杂),然后Google在这块电路板上用Linux写入了一个系统,并对这个定制的系统做了一些改动和增强。那么Google对这块带Linux内核的电路板做了什么修改呢?

一、Android在Linux系统上做的修改:

1) Goldfish :Goldfish是在模拟器上运行的虚拟的CPU,那么在实际的手机上运行的时候Android对goldfish做了很大的改动,据统计,Android内核对Goldfish的改动主要涉及44个文件。

2) YAFFS2  (Yet Another Flash File System):由Aleph One公司所发展出来的NAND flash 嵌入式文件系统;手机主要用到的存储介质是flash卡,所以必须有一套高效的适合访问flash的存储系统,Android对这一系统也做了相应的改动。

3) 调度器(Scheduler)与进程调度和时钟相关的策略,Android对此方面也做了一些修改;

二 、Android新增的驱动

1)IPC Binder :一种IPC(进程间通信)机制;在Android系统的Binder机制中,由四个系统组件组成,分别是Client、Server、Service Manager和Binder驱动程序,其中Client、Server和Service Manager运行在用户空间,Binder驱动程序运行内核空间。通过Binder将这四个系统组件连接起来实现了远程调用(RPC),关于Binder的运行机制可以参考这篇文章Android 深入浅出之binder机制

2)Low Memory Killer:做Android开发的时候没少为OOM以及服务或者进程被杀死头疼,主要都是因为移动设备低内存的限制,所以Android设置了这个驱动在系统内存低的时候杀死一些进程。运行的机制是在系统内存低于某值时,清除相关的程序,保障系统保持拥有一定数量的空闲内存。

3)Ashmem: 匿名共享内存;这个使得进程间能够共享大块的内存,其两个特点一是能够辅助内存管理系统来有效地管理不再使用的内存块,二是它通过Binder进程间通信机制来实现进程间的内存共享。

4)RAM Console and Log Device:为了调试方便,并加入了log记录方便分析查看;

5)Android Debug Bridge:Android调试桥 ;通过这个,能利用PC来对移动设备进行管理,一旦移动设备和PC连接成功,就能通过adb命令对其进行管理;

三、Android对Linux的增强:

主要包括Alarm(硬件时钟)、Ashmem(匿名内存共享)、Low Memory Killer(低内存管理)、Logger(日志设备),等等。

原文地址:https://www.cnblogs.com/BobAdmin/p/8308326.html

时间: 2024-11-09 00:10:02

Android开发两年,从头开始学Android(一)的相关文章

从事 Android 开发六年,我学到的那些事!

六年来,我为多家公司编写过各种应用程序.你编写代码或处理代码库的文化和方式会随着你的经验而不断变化. 你的代码质量应该随着经验的增加而提高,否则就需要反思了. 选择正确的架构 如果你是从头开始开发应用程序,那么就会有许多优势. 其中之一就是选择正确的体系结构.通常,我们喜欢将所有内容都写在同一个activity文件中,因为这样做很容易.但是,当你的代码量增多时,这就会成问题.你的代码库会变得十分庞大,每个文件包含的代码行数也会非常庞大. 考虑到代码的性能和维护,在早期阶段选择正确的体系结构,才是

android开发 两张bitmap图片合成一张图片

场景:对android4.4解码gif(解码文章见前面一篇)后的图片进行每帧处理,android4.3 解码出来的每帧都很完整,但是到android4.4版本就不完整了,每帧都是在第一帧的基础上把被改变的显示出来了,所以需要再次合成每帧 如图效果: 合成后: 代码直接看: /** * 将2张图片合成 * @param downBitmap 底部图片 * @param upBitmap 置顶的图片 * @return */ public static Bitmap compoundBitmap(B

五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程

在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对准备进入Android开发的朋友有帮助. 本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步: 下载安装Eclipse . 第四步:下载安装Android SDK . 第五步:为Eclips

安卓开发基础知识0(五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程)

需求说明:安卓开发 内容       :安卓开发所需的环境搭建 来自       :时间的诗 原文:http://www.cnblogs.com/zoupeiyang/p/4034517.html 参考:http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 引言 在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为

Android开发新手学习总结(一)——使用Android Studio搭建Android集成开发环境

[新手连载]一:使用Android Studio搭建Android集成开发环境http://bbs.itcast.cn/forum.php?mod=viewthread&tid=87055&fromuid=150705 (出处: 传智播客论坛_传智播客旗下社区) 一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨在取代Eclipse和ADT(

Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)

一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html Android SDK:http://developer.android.com/sdk/index.html ADT:

【Android开发日记】第一个任务Android Service!Service靴+重力感应器+弹出窗口+保持执行

前言: 近期在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Service启动和销毁,Service保持一直执行. 满足了自己的需求.现记录学习心得. 希望能给你带来一些帮助. 1.Service创建:重写4个方法 onBind():返回一个IBinder对象,这个对象能够使应用程序与Service通信.假设用startService.stopService启动和关闭Service的话.Service和訪问者是无法通信交换数

Android 开发IDE之(Eclipse 和 Android Studio )

前面的文章写了离线下载必要的开发资源,现在小记一下Eclipse和Android Studio的安装 (一)Eclipse 1.下载 下载传送 2.一般下载Eclipse IDE for Java Developers这个就可以了,现在Eclipse比较吃内存,还是比较卡的.下载完直接解压就行了. 3.运行,配置ADT(Android Development Tools)插件. 1)在线安装:打开Eclipse, 在菜单栏上选择 help->Install New SoftWare 出现Inst

Android开发环境搭建日记和嵌入式Android开发环境初探

原文出处:www.cnblogs.com/chsry 非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs.com/zoupeiyang/p/4034517.html  ,添加了我搭建时候遇到的问题和自己的解决方案,也基本备份了我当时自己的设置,以备日后查看. 本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配