独立进程通信之悬浮下拉状态栏实践
前言
我们首先先看下这个效果是怎么样的,如果有人见过百度音箱或者是小米音箱,就应该对这个会清楚一些,也就是图示中我们是自定义了一个下拉状态栏,并没有使用系统原生的,那么我们就可以根据需求实现我们自定义的下拉状态栏 UI,比如音乐通知,时间、天气显示信息等等。不过这种需要自定义的情况一般是针对于 Android 定制化的地方会用到的多一些,但本文更多的是牵扯的是如何将这个下拉状态栏运行在独立进程中,以及进程之间的通信,这样的话即使下拉状态栏崩溃了,也不会影响主进程。
OkHttp 源码分析及网络优化
使用
OKHttp 是作为 Android 开发人员使用最多的网络库之一, 接下来从最基础的使用来介绍 OkHttp 源码里面是如何工作的。
首先需要添加OKHttp的依赖
1
|
implementation 'com.squareup.okhttp3:okhttp:3.5.0' |
Android 事件分发的冲突解决方案
阅读本文前,需要对事件分发机制所有了解,建议先阅读 Android 事件分发机制源码流程分析,但是解决这个问题之前,首先我们要知道,滑动冲突是怎么来的,为什么会存在滑动冲突呢 ?
其实在 Android 中,只要是在界面中内外两层 View 可以同时滑动的时候,这个时候,就会产生滑动冲突了,或者可以理解在同一方向一个 View 上只能响应一组事件序列。当然了,部分情况下,会看到同时滑动的情况,可能是通过特殊的方式,将自己的事件序列传递给其他 View 上面了。
Android 事件分发机制源码流程分析
假设我们的 Activity 中的布局是这样的
Android 协程编写高效的并发程序
协程是什么
Android 官方文档中的描述是:协程是一种并发设计模式,可以在 Android 平台上使用它来简化异步执行的代码。或者通俗的讲:协程就是一套轻量级线程框架,使用方便,拥有一系列的语法糖
使用
Android 中如果要使用协程,必须添加如下依赖库:
|
|
如何开启一个协程,最简单的方式就是使用 GlobalScope.launch 函数,如下所示:
|
|
Java 可变参数可能引发的性能问题
Java 可变参数可能引发的性能问题
在这里先看一下我们项目中之前写的日志打印工具
理解 Android 中的 window 与悬浮窗的实现
Window 是什么
- Window 是一个相对概念上的载体,他并不是一个真正的容器,仅仅负责管理依赖 window 上面的 View 的一个类,充当管理者。
- Window 是一个抽象类,在源码实现中,只有一个具体的实现类,phoneWindow
- 创建 Window 需要通过 WindowManager 创建
- WindowManager 是外界访问 Window 的入口
- Window 具体实现位于 WindowManagerService 中
- WindowManager 和 WindowManagerService 的交互是通过 IPC 完成
Activity 和 Window 之间的关系
解决日志打印 Unicode 编码问题
最近接入了一个第三方的网络接口,他们的日志都被 Unicode 编码了,全都是这样很多反斜杠类似的:
|
|
华为 Android 10.0 启动服务失败
最近调研了一个音乐服务的 App 以及相关功能的库。发现使用的时候,开启了一个音乐服务,在其他的手机上面暂时没有发现其他什么问题,但是在华为 Android 10 手机上每次 run 的时候,服务正常启动也是没有问题的, 但是如果关闭掉 App ,重新启动 App 服务就起不来了。我尝试如下两种方式启动服务:
|
|