android 架构

来源:互联网 发布:阿里云 ssh 断开 编辑:程序博客网 时间:2024/04/29 00:33
android 架构图

http://blog.sina.com.cn/s/blog_49f62c350100qzgz.html

http://blog.csdn.net/banketree/article/details/24718899


1.android SDK--用于开发应用层的软件开发包(熟悉了,主要是能快速开发APP)
2.framework--应用程序框架(熟悉了,主要有助于开发出更加高质量的应用,用于应用优化)
3.libraries--底层库 (熟悉了,主要用于做底层开发)
4.linux kenerl--linux内核

5 性能,内存优化(运行速度,占用空间);


熟悉SDK=熟悉FrameWork层提供的接口+理解原理是什么(常常要结合类图和模式来看,记忆更加深刻,更容易理解)。

要看懂Android系统的源代码,各方面的知识还是需要了解一下的,但是不需要熟悉。
语言方面,C/C++和Java要掌握。
基础知道方面,Linux内核的各种机制要了解一下。
Android系统方面,Binder进程间通信机制和匿名共享内存机制,基础中的基础,要掌握。


1. sdk

1.1 ActivityManager

理解关键点:1.代理模式
            2.真正动作的执行为Stub类ActivityManagerService,ActivityManagerService对象只有一个并存在于system_process进程中;
              而ActivityManager存在于用户进程中
            3.实现跨进程的对象访问:Binder实现跨进程通信(Binder的实现相当复杂,这里目的在于理解调用过程即可)

          4ActivityManager的工作流程

参考资料:http://blog.csdn.net/caowenbin/article/details/6036726
                    http://blog.csdn.net/stonecao/article/details/6579710

                   http://blog.csdn.net/xieqibao/article/details/6570080


其他:1.通过日志系统源代码分析,可以理解Android应用程序框架调用过程;理解日志系统。

            http://blog.csdn.net/luoshengyang/article/details/6598703;


       2.我们平时对XxxxManager(PackageManager)的调用,最终是的在XxxManagerServer.java(PackageManagerService.java)中实现的
        将这个PackageManagerService注册到SystemServer中,就可以被App调用了。一般上,某在service的上一层为manager层,至于
        至于这个结构图中的manager和实际中的service是否一一对应,可以参考:http://blog.csdn.net/ccwwff/article/details/5766546

 

2.2 PackageManager

原理如ActivityManager,

类图请看:http://blog.csdn.net/stonecao/article/details/6591454

讲解:http://wenku.baidu.com/link?url=YzS1keF1IoKWdvMw1zmuDOQ9eAGC4YFtX7AKGKtiIRFu940rzDrI9IygkC8VTVF1GuR-SoUrOsG4jCRlVRGawC6GlvRj2Ze2Gttuupp_70W

 

自己归纳了一下:

SDK中声明抽象类PackageManager
FrameWork中有一个实现类ContextImpl.java,在ContextImpl.java有一个内部静态类叫
         ApplicationPackageManager,实现了抽象类PackageManager的所有方法
        (通过其里面包装的IPackageManager.Stub.Proxy extends IPackageManager 对象代理执行相关操作,这是一个aidl接口,也就是说肯定对应某一个service,来进行远程调用)

         static final class ApplicationPackageManager extends PackageManager {}

         PackageManagerService就是对IPackageManager的实现

 

2.3 .WindowManager
接口认识:http://www.cnblogs.com/over140/archive/2011/01/14/1935202.html


2.4Content Providers
Content Provider在应用之间数据共享的原理
http://blog.csdn.net/luoshengyang/article/details/6967204


大概了解Content Providers的接口
http://blog.csdn.net/stonecao/article/details/6439473


2.5NotificationManager
接口认识:http://www.cnblogs.com/over140/archive/2012/01/09/2316809.html




2.6telephonymanager 
接口认识:http://www.cnblogs.com/linjiqin/archive/2011/02/26/1965682.html


2.7ResourceManager
接口认识:http://0537wangjin.blog.163.com/blog/static/24379549201471441157522/
          http://blog.csdn.net/linxcool/article/details/9056841


2.8LoacationManager
接口认识:http://www.cs.cmu.edu/~srini/15-446/android/android-sdk-linux_x86-1.0_r2/docs/reference/android/location/LocationManager.html


5 性能调优
http://www.trinea.cn/android/android-traceview/


0 0
原创粉丝点击