关于Activity,Window,View的关系一直有个模糊的印象,看别人的分析一般都这么理解Activity是管理Window,Window用来承载View,View是最终的视图,也有说Window的作用可有可无的,作用并不大的,并不是说这些观点有问题,而是看了这么多后,会更迷惑,管理是怎么管理的,承载是怎么实现的,如果不自己根据源码看一些,这些概念会一直是抽象的,遇到问题还是没法理解,例如:

1 . 在Activity里调用

1
2
WindowManager.LayoutParams wl = new WindowManager.LayoutParams();
getWindowManager().addView(mView,wl);

1
2
LayoutParams wmParams =...
addContentView(mView,wmParams); //activity里的方法

这两种方式背后的实现是怎样的,有什么区别?

阅读全文

分析这个过程不是单纯为跟一遍函数调用的流程,而是更好的理解平常用到的一些方法、对象的初始化时间,对象创建的个数,方法的先后顺序,以及每个类,方法背后的作用和目的。主要是一下几个问题:

  1. Application是什么时候创建的,每个应用程序有几个Application
  2. 应用的资源路径什么时候初始化的
  3. 应用中ContextImpl的个数
  4. Application.attach(),Activity.attach()的调用时机及作用
  5. Instrumentation的重要性及具体作用
  6. 点击Launcher启动Activity和应用内部启动Activity的区别
阅读全文

理解Binder框架

发布在 Android

Binder是Android系统进程间通信(IPC)最重要的方式。要想了解Android的系统原理,必须要先对Binder框架有一定的理解。Binder是什么?Binder可以理解为能在进程间进行”通信”的对象,这个通信不是指在不同进程中操作同一个对象,而应理解为一种通信协议。

Binder的引入背景

传统的进程间通信方式有管道,消息队列,共享内存等,其中管道,消息队列采用存储-转发方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程。共享内存虽然无需拷贝,但控制复杂,难以使用。socket作为一款通用接口,其传输效率低,开销大,主要用在跨网络的进程间通信和本机上进程间的低速通信。Binder通过内存映射的方式,使数据只需要在内存进行一次读写过程。

阅读全文
  • 第 1 页 共 1 页

SilenceDut

talk is cheap,here are my blog


Android engineer


广东,广州