美文网首页
Android Framework 重要成员简介

Android Framework 重要成员简介

作者: Batashi | 来源:发表于2018-05-24 17:16 被阅读0次

    一、总体结构:
    框架中包含了3个主要部分:1.服务端; 2.客户端; 3.Linux驱动。

    二、服务端主要成员:

    主要包括AMS、PMS、WMS等。通过Binder机制与客户端进行交互。

    • ActivityManagerService(AMS):管理所有应用程序中的Activity,他掌握所有Activity的情况,所有具有调度Activity生命周期的能力,简而言之,它就是管理和掌控所有的Activity。ActivityThread会通过Binder与之交互,而AMS与Zygote之间进行交互则是通过Socket通信。

    • WindowManagerService(Wms):控制窗口的显示与隐藏以及窗口的层序,简而言之,就是它是管理窗口的,可以知道大多数和View有关系的都要跟他打交道。

    • PackageManagerService:它是Android系统中最常用的服务之一。它负责系统中Package的管理,应用程序的安装、卸载、信息查询等。

    • KeyQ类:它是Wms的一个内部类,一旦创建就会启动一个新线程,这个线程会不断的接收读取用户的UI操作消息,并把这些消息放到消息队列QueueEvent中。

    • InputDispatcherThread类:该类也是一旦创建就会启动一个线程,这个线程会不断的从上面的QueueEvent中取出用户的消息,进行一定的过滤,再讲这些消息发送给当前活动的客户端程序中。

    三、客户端主要成员:

    • ActivityThread:主线程(UI线程),它的main()函数就是Android 程序的入口。内部类主要有ApplicationThread(继承自IBinder);还有H类(继承自Handler)。ApplicationThread主要负责与AMS打交道(通过Binder 机制实现交互),通过调用H来发送消息,并在H消息处理函数中调用主线程的方法来实现真正的业务逻辑。注意:ActivityThread不是线程!!!

    • ViewRootImpl:很重要的一个类,负责客户端与WMS的交互:内部有W类,W类继承于Binder,所以他与ApplicationThread的角色是差不多的,只不过他对应的是Wms,当Wms想与客户端进行通信的时候,Wms就调用这个类。内部又有ViewRootHandler类继承于Handler,所以他能在W类接收到Wms的消息后,把这个消息传送到UI线程中。同时界面绘制的发起点也是在这里面:performTraversals()。

    • Activity:四大组件之一,用得最多的组件。主要与用户交互。

    • PhoneWindow:继承自Window类,它里面会放一个DecorView,它提供了一组统一窗口操作的API.

    • DecorView类:这是我们所能看到的View的所有,它继承自FrameLayout,我们写的布局view就是放在他这个里面。

    • ApplicationThread类:继承于Binder,当Ams想与客户端通信时(即调用客户端的方法),Ams调用的就是这个类。

    • Instrumentation类:负责直接与Ams对话,比如当客户端想与Ams进行通信时(即调用Ams服务里的方法),都是他去实现单向调用Ams,即他相当于于一个管家,所有想调Ams的操作都集中到他这儿,他负责单向调用Ams.

    • ActivityManager@SystemService(Context.ACTIVITY_SERVICE)属于系统服务。ActivityManager存在于用户进程中,由用户进程调用获取Activity管理的一些基本信息。如:getRunningAppProcesses()、getAppTasks()。但是 ActivityManager类并不真正执行这些操作,操作的真正执行在system_process进程中的 ActivityManagerService,ActivityManagerService作为一个服务在system_process启动时被加载。ActivityManagerAMS分属于不同的进程。它们之间通过Binder进行交互。

    • WindowManager@SystemService(Context.WINDOW_SERVICE)属于系统级服务。它是一个接口,继承自ViewManager接口。由此可见,它的职责主要是对控件View进行增(addView(View view, ViewGroup.LayoutParams params))、删(removeView(View view))、改(updateViewLayout(View view, ViewGroup.LayoutParams params))操作。它本身还提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。它的实现类是WindowManagerImpl。对View的操作逻辑由WindowManagerImpl、WindowManagerGlobal及ViewRootImpl等共同完成。

    • ContentProviders:使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享自己的数据。进程间通信的方式之一。

    • View System:可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。

    • NotificationManager@SystemService(Context.NOTIFICATION_SERVICE),系统级服务。主要管理通知栏消息,提醒用户有事发生。它使得应用程序可以在状态栏中显示自定义的提示信息。

    • PackageManager:检索各种类型的已经安装在设备上的应用信息。提供对系统的安装包的访问。包括安装、卸载应用,查询permission相关信息,查询Application相关信息等。

    • TelephonyManager@SystemService(Context.TELEPHONY_SERVICE)系统级服务。主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。

    • ResourceManager:提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。

    • LocationManager@SystemService(Context.LOCATION_SERVICE),系统级服务。提供设备的地理位置的获取方式。

    • XMPP:可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。

    相关文章

      网友评论

          本文标题:Android Framework 重要成员简介

          本文链接:https://www.haomeiwen.com/subject/nrijjftx.html