Piasy

NEVER STOP

再谈 Java 深浅拷贝

去年的一篇文章总结了一下深浅拷贝,Immutable 和 unmodifiable 这三个概念,今天再看看 Java 的深浅拷贝。 考虑以下代码: static class ImmutablePerson { final String mName; ImmutablePerson(String name) { mName = name; } } ...

深入理解 RecyclerView 系列之一:ItemDecoration

RecyclerView 已经推出了一年多了,日常开发中也已经彻底从 ListView 迁移到了 RecyclerView,但前两天有人在一个安卓群里面问了个关于最顶上的 item view 加蒙层的问题,被人用 ItemDecoration 完美解决。此时我发现自己对 RecyclerView 的使用一直太过基本,更深入更强大的功能完全没有涉及,像 ItemDecoration, Item...

这可能是目前最详细的安卓task, launchMode, intent flag测试分析与总结了

最近一直在补充framework以及更深入的安卓开发知识,看到老罗的博客以及developer文档关于task, launchMode, intent flag的分析说明之后,不禁想要自己动手测试一下,验证他们所说的是否属实,个人认为当属目前最全面的测试与总结了(欢迎补充与质疑),完整代码可以在Github获取。 TL; DR 同一task内的activity可以是来自不同进程的ac...

从 A/Looper: Could not create epoll instance. errno=24 错误浅谈解决各种 bug 的思路

今天代码写着写着就莫名闪退了,手机也没有“程序停止运行”的提示,logcat也没有看到蓝色的调用栈log,这样的闪退最是蛋疼了,还好必现。复现几次之后,终于从logcat中看到了一行可疑的log:A/Looper: Could not create epoll instance. errno=24,看起来又是在native层闪退了。本文就把这个问题的分析解决过程记录了下来。 方法论 遇见没...

(可能是)目前最全面的Android Espresso配置指南了

安卓开发过程中测试的编写是一个公认的痛点,本文总结了我在AndroidTDDBootStrap工程中配置Espresso测试所遇到的坑,例如神秘报错android.content.res.Resources$NotFoundException和java.util.zip.ZipException: duplicate entry,以及对dagger,mock网络请求的实践,目测应该是目前最全...

手把手OkBuck教程:应用到AndroidTDDBootStrap项目(续)

5个多月过去了,OkBuck和AndroidTDDBootStrap项目都发生了重大更新,原文中的描述已经过时已久,今天趁着AndroidTDDBootStrap完成重构,更新AndroidTDDBootStrap的OkBuck配置过程,继续体验其畅快淋漓! 第一步,应用插件 按照OkBuck文档的步骤,根据本工程的结构,在/build.gradle中加入配置,配置后/build.grad...

解决A/libc Fatal signal 11 (SIGSEGV)错误,这可能是目前最鲁棒的Android声音录制和播放封装库了

安卓开发过程中一旦开始和硬件打交道,以及涉及到一定的native代码之后,各种闪退就开始浮出水面了,声音录制和播放当然不例外,其中最摸不着头脑的就是A/libc: Fatal signal 11 (SIGSEGV) at了。本文总结了YOLO安卓客户端大半年来的安卓音频实践,整理出一套系统API的封装,命名为RxAndroidAudio。 概览 安卓平台和声音录制与播放相关的主要是4个类:...

完美解决安卓上层输入控件随键盘弹起,下层 UI 变形问题

在YOLO的直播间内,可以发送文字评论,要求文字输入框随键盘弹起,而底下的视频又不会变形,也不会被顶上去,这个问题曾一度困扰我们很久,适逢大师兄公司安卓工程师也遇到了同样的问题,所以简单整理成一篇文章,供更多开发者参考。本文源码地址。 面临的问题 主要还是activity的windowSoftInputMode选项只能设置一种值,如果希望输入框随着键盘弹起而顶上去,那底下的视图要么会顶上去...

OkBuck, underneath the hood

本文对我目前在github上收获star最多的开源项目OkBuck的工作原理进行了深度解析,并在本文写作过程中完成了对OkBuck的第三轮重构,作为OkBuck 1.0版本发布的基础。 渊源 15年9月份开始了解到快速打包相关的技术,此时已经饱受gradle打包龟速的痛苦。 首先了解到的是LayoutCast,但由于其只支持Android 5.0 以上(ART)的手机,虽然5.0的测试机...

RxScreenshotDetector:Android 截屏检测

应PM需求,YOLO可能会对直播过程中的截屏进行检测并通知其他人,类似于Snapchat,此时iOS同事再次表达了先天优势,iOS系统提供了API呀!Google无果之后决定再次造轮子,为了持续表达对Rx的敬意,命名为RxScreenshotDetector,github 源码地址。 效果有图有真相 原理 安卓系统并没有提供任何截屏检测相关的API,网上针对Snapchat的这项功...