0%

NestedScrolling 是谷歌推出的用于解决嵌套滑动的解决方案,在CoordinatorLayout中有使用。在 sdk api 21 之后,直接更新到了 View 和 ViewGroup源码里面,同时也在android.support.v4 包中提供了两个接口NestedScrollingChild和NestedScrollingParent, 还和两个辅助类 NestedScrollingChildHelper 和 NestedScrollingParentHelper 用来帮助开发者实现相关功能. 因此在 sdk21之后 系统原生控件是直接支持嵌套滑动的,如果自己需要实现,用那几个相关类就可以了。

阅读全文 »

在Android系统中SystemUI是以应用的形式运行在Android系统当中,即编译SystemUI模块会生产APK文件,源代码路径在frameworks/base/packages/SystemUI/,安装路径system/priv-app/-SystemUI。它和普通apk不同的是,它是开机启动的并且不可退出,可以把它理解为一个模块。它为系统提供了基础的显示页面,比如 屏幕顶端的状态栏,屏幕底部的导航栏,壁纸,近期使用app列表,截屏操作,电量监控等功能。

阅读全文 »

在wms服务中,我们可以直接使用它的api来创建一个窗口,显示出来并且通过InputEventReceiver接收输入事件。但是这种方法太原始,并且存在以下一些问题:

  1. 需要完全的Android源码环境
  2. 需要自己去处理UI元素的测量,布局和绘制
  3. 还需要处理InputEventReceiver事件,分发到合适的窗口
  4. wms来的各种回调
阅读全文 »

Binder驱动原理

Binder驱动的核心是维护一个binder_proc类型的链表。里面记录了包括ServiceManager在内的所有Client信息,当Client去请求得到某个Service时,Binder驱动就去binder_proc中查找相应的Service返回给Client,同时增加当前Service的引用个数。

阅读全文 »

Android 中的窗口是屏幕上一块用于 显示各种视图 并且可以响应用户输出的 矩形区域。从原理上来说,窗口的是独占一个Surface实例的显示区域。而WindowsManagerService则是运行在系统进程中的用于 为窗口分配Surface,控制Surface的Z-order,位置,尺寸,窗口动画等功能的 一项重要服务,并且还是输入系统的一个中转站,负责转发输入系统的消息到具体的窗口进行响应。

阅读全文 »

最近遇到一个问题,如果Java线程池的设置是,coresize=0,队列为无界队列,maxSize=1,这个线程池会不会工作,会怎样工作?

阅读全文 »

最近几天把618在京东买的《java并发编程的艺术》看完了,感觉挺不错的,很多东西都是第一次看到这么详细的内容,可以和《深入理解Java虚拟机(第2版)》配合看,推荐先看后面这一本

阅读全文 »