- 博客(10)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 设置View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);导致布局第一次点击没有反应
如过你添加了如下代码:getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);你会发现,第一次进入点击无反应。我们看看源码解释:/** * Flag for {@link #setSystemUiVisibility(int)}: View would ...
2018-12-06 20:04:08 4981 1
原创 Android 8.0 添加自定义服务流程简述
最近正在做一个项目,需要添加额外的传感器,如温湿度等。可以通过Android sensor的架构的支持添加应用层调用接口。但我拿到的温度传感器没有厂家HAL层的支持,而我对C++目前不是很熟悉。所以我采用自定义服务对上层的支持。这里我忽略了传感器的具体使用实现,只记录下自定义服务的实现流程。(以温度传感器为例) 一,添加AIDL文件1.在frameworks\base\...
2018-08-06 18:49:50 3055 1
原创 Android 8.0 Settings流程分析与变动
开! 场! 白! 好! 难! 写!一,相比Android Settings 7.0 如下图,在7.0的基础上,去掉了7.0新加的侧滑菜单(可能是觉得有点鸡肋吧)。多加了一级页面,把原来类别标题变成的第一级菜单的子项。在代码架构也稍加变动,并引入架构组件之LifeCycle(生命周期感知,本文不作介绍)。二,第一级菜单的加载浏览源码,大多数我们从程序的AndroidManifest.xml入...
2018-03-12 18:38:18 15428 5
原创 Handler,MessageQueue,Looper,Runnabler的关系
从源码探究线程的Handler,MessageQueue,Looper,Runnabler的联系
2017-08-22 14:55:06 399
原创 Binder 跨进程通信原理浅析
关于跨进程: 为什么要跨进程呢?在Android系统中,每个进程都有分配自己的内存空间,各进程间是不能直接访问其他进程的内存的,那当一个程序要操作与另一个程序的方法怎么办呢?(比如在应用程序中隐藏SystemUI的导航栏)这时就需要跨进程通信了。Binder就是一个帮助进程进通信的虚拟设备,为什么是虚拟设备呢,因为它没有硬件,只只用代码实现的通信架构。从哪开始说? Android系统首次开机启动
2017-05-12 15:29:05 1132
原创 android 7.0 Activity 的getSystemService()
当我们的应用需要调用系统服务时,我们是通过getSystemService()方法来获取系统服务并直接调用。系统服务的进程和当前应用程序的进程肯定是不同的,不同的进程间是不能直接进行通信的。那为什么可以这个方法获取直接调用呢?我们来看看到底是怎么实现的。 getSystemService()方法是在ContextImpl中,因为Activity时的Context对象的实现类是ContextI
2017-05-11 14:25:07 1099 1
javadoc是怎么匹配类中的方法的?
2015-10-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人