`
zzu_007
  • 浏览: 23777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
page6 WindowManagerGlobal的getWindowSession函数的定义如下: 1     public static IWindowSession getWindowSession(Looper mainLooper) { 2         synchronized (WindowManagerGlobal.class) { 3             if (sWindowSession == null) { 4                 try { 5                     InputMethodManager imm = Inp ...
page11     WindowManagerService的getDisplayContentLocked函数的定义如下:     1     public DisplayContent getDisplayContentLocked(final int displayId) {     2         DisplayContent displayContent = mDisplayContents.get(displayId);     3         if (displayContent == null) {     4             final Display dis ...
page1     Activity组件在其窗口对象和视图对象创建完成之后, 就会请求与WindowManagerService建立一个连接, 即请求WindowManagerService为其增加一个WindowState对象, 用来描述它的窗口状态.     我们从两方面来看Activity组件与WindowManagerService ...
page4     我们看一下ViewRootImpl对象的创建过程, ViewRootImpl类的声明如下:     public final class ViewRootImpl implements ViewParent,             View.AttachInfo.Callbacks, HardwareRenderer.HardwareDrawCallbacks     ViewRootImpl类的构造函数定义如下:     1     public ViewRootImpl(Context context, Display display) {     2         ...
page1 当一个Activity第一次激活的时候会为该Activity组件创建一个ViewRoot对象, 并且与该Activity所创建的应用程序窗口关联起来, 这样就可以通过该ViewRoot对象来控制应用程序窗口视图的UI展示了. 我们从ActivityThread的handleResumeActivity函数开始分析ViewRoot的创建过程, handleResumeActivity函数定义如下, 我们只关心ViewRoot创建的部门: 1     final void handleResumeActivity(IBinder token, boolean clearHide, ...
page7 在这篇文章里, 我们分析一下W类的构造过程. W类是定义在ViewRootImpl类中的一个内部类, W类的定义如下:     static class W extends IWindow.Stub     由此可见,  W本质上是一个Binder本地对象, 其实这是会传给WindowManagerService的, WindowManagerService就是通过W来通知Activity对象执行一些操作.     W的构造函数如下:     W(ViewRootImpl viewAncestor) {         mViewAncestor = new WeakRefere ...
page9 在这里我们分析一下DisplayManager的getDisplay函数的实现:     1     public Display getDisplay(int displayId) {     2             synchronized (mLock) {     3                 return getOrCreateDisplayLocked(displayId, false /*assumeValid*/);     4             }     5     }     第2行(DisplayManager->getDispla ...
page5 在这篇文章中, 我们分析一下ContextImpl的getSystemService函数, 1     public Object getSystemService(String name) { 2         ServiceFetcher fetcher = SYSTEM_SERVICE_MAP.get(name); 3         return fetcher == null ? null : fetcher.getService(this); 4     } 第2行(ContextImpl->getSystemService)SYSTEM_SERVIC ...
page1 我们开始分析一下Activity的Window和WindowManager的创建过程, 在Activity的attach函数中, 不仅会创建Context, 还会创建Window和WindowsManager对象.因此我们就从Activity的attach函数开始分析: 1     final void attach(Context context, ActivityThread aThread, 2             Instrumentation instr, IBinder token, int ident, 3             Application a ...
page1 从本篇文章开始,我们分析一下Activity创建Context的过程. Context是在ActivityThread的performLaunchActivity函数中创建的, 因此我们就从performLaunchActivity函数作为入口开始分析: 1     private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) { 2         // System.out.println("##### [" + System.currentTim ...
page4 在这里我们分析一下ContextImpl的init函数的具体实现: final void init(LoadedApk packageInfo, IBinder activityToken, ActivityThread mainThread) {         init(packageInfo, activityToken, mainThread, null, null, Process.myUserHandle());     } 1     final void init(LoadedApk packageInfo, IBinder activityToken, ...
我们从SurfaceComposerClient对象的创建开始分析应用程序与SurfaceFlinger的连接过程.每一个需要SurfaceFlinger渲染的应用程序都会创建一个SurfaceComposerClient对象,是这样么,我不确定,需要验证. SurfaceComposerClient类的声明(在SurfaceComposerClient.h文件中)如下: class SurfaceComposerClient : public RefBase SurfaceComposerClient类的构造函数定义如下: SurfaceComposerClient::SurfaceCo ...
page11     我们来看一下SurfaceFlinger的onFirstRef函数的定义:     1void EventThread::onFirstRef() {     2    run("EventThread", PRIORITY_URGENT_DISPLAY + PRIORITY_MORE_FAVORABLE);     3}     我靠, 又调用run函数, 这会导致又启动了一个线程.     同样的, 这也会导致readyToRun和threadLoop函数的.     EventThread的readyToRun函数是从Thread类继承而来的, 是 ...
page6 我们看一下Thread的run函数的实现:     1 status_t Thread::run(const char* name, int32_t priority, size_t stack)     2 {     3     Mutex::Autolock _l(mLock);     4     5     if (mRunning) {     6         // thread already started     7         return INVALID_OPERATION;     8     }     9     10     // reset ...
page1 在Android系统中, 显示系统在底层是通过SurfaceFlinger服务来完成的, 因此从今天开始, 我们从SurfaceFlinger服务作为入口来分析一下Android显示系统. SurfaceFlinger服务是在System进程中, 而System进程是由Zygote进程启动的, 并且是以Java层的SystemServer类的静态成员函数main为入口函数的。 因此,接下来我们就从SystemServer类(定义在SystemServer.java文件中)的静态成员函数main开始,分析SurfaceFlinger服务的启动过程: 1 public stati ...
Global site tag (gtag.js) - Google Analytics