
Android
文章平均质量分 93
树獭非懒
因上努力,果上随缘
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android内存优化的知识梳理
随着对性能优化的理解,发现优化的方法并不是重难点,关键是在于去主动、及时的发现问题所在。要想实现主动和及时,代码采用优化--埋坑--优化--埋坑的方式并不能帮我们做到。发力点应该在于去建立一套合理的框架与监控体系,能及时的发现诸如bitmap过大、像素浪费、内存占用过大、应用OOM等问题。...原创 2022-08-08 22:16:20 · 1033 阅读 · 1 评论 -
把把Android事件分发机制的脉络
开始的开始当我手指触摸到手机屏幕后,给我所见即所得的触控体验,它的背后发生了什么?出于对它的好奇,就有了这篇文章。因为本人不喜欢大段大段的源码分析,所以本文尽量从设计的角度去把把事件分发机制的脉络,少贴源码是我的目标之一,虽然这么说,但当我把文章写完后最后发现依然贴了不少代码,想删减却没法减少,都是很核心的部分。本博客的主要内容如下:事件分发的整体设计ViewRootImpl的创建应用层级的事件分发流程为了后面更容易的理解事件分发机制,在介绍核心内容前,准备了一些前置知识。前置知识:View原创 2020-12-27 21:22:40 · 621 阅读 · 0 评论 -
Drawable和Bitamp
Bitmap、Drawable是什么?Bitmap: 一个个位图像素映射到内存的数据存储器Drawable:可以自带绘制规则的绘制类,通过 Canvas来进⾏绘制的上层⼯具它们的对象互转实现是怎样的?kotlin的ktx为我们提供了很便利的方式,不像之前我们还需要自己写(其实是从网上拷贝)一大串实现代码//drawable -> bitmapdrawable.toBitmap()//bitmap -> drawablebitmap.toDrawable()它背后实现其实和我们原创 2020-10-25 15:50:31 · 321 阅读 · 0 评论 -
Binder系列之Service Manager
在笔者的上一篇博客中主要分享了 Binder的通信过程是如何实现的,大致内容就是下面这张图:笔者也提到Binder机制主要对象有Binder Client、Binder Server、Binder Driver、Service Manager ,它的完整过程是这样的:(此处是从Gityuan大佬的博客copy过来的一张图)对比两者或者说仔细看了笔者的上篇博客,会发现介绍通信过程忽略了Service Manager这个角色,所以本篇的目的就是介绍它了。ServerManager和Binder的关系原创 2020-08-01 14:54:41 · 797 阅读 · 0 评论 -
Kotlin带参单例模式的优雅实现
kotlin经典单例实现我们都知道 Kotlin 为我们实现单例提供了很方便的实现,一个关键词就可以搞定:那就是 objectobject SomeSingleton反编译成 Java 代码:public final class SomeSingleton { public static final SomeSingleton INSTANCE; private SomeSingleton() { INSTANCE = (SomeSingleton)this; }原创 2020-06-22 08:43:30 · 449 阅读 · 0 评论 -
是时候学一下Binder了(一)
Binder是一片大森林,涉及的东西很多,很容易学着学着就迷失了方向。笔者也曾经看过这部分内容,但半途而废,只留下一声感叹:太难了吧。但现在发现,还是得静下心来去啃这个骨头,因为Binder确实太重要了。作为一名新手,刚入新手村,先从宏观的角度看Binder会更好一点吧:Binder是什么?Binder由哪些元素组成?Binder的这些组成元素是怎么建立联系的?Binder的通信过程是...原创 2020-04-30 20:04:10 · 244 阅读 · 0 评论 -
初探Android 热修复
本篇博客是笔者第一次接触热修复的学习笔记,主要分享内容:1. 什么是android的热修复?2. 如何实现热修复?目前有什么方案?3. 热修复背后的原理?Android热修复是啥?常见的使用场景刚发布的应用出现闪退、ANR等bug,及时修复 。及时推送一些小的功能给用户使用。优势所在无需重新发布,实时高效修复bug用户无需操作,无需下载新的应用修复成功率高,降低损失...原创 2020-01-10 19:56:56 · 335 阅读 · 0 评论 -
一篇文章认识Gradle的使命
谈谈为什么要写这样一篇博客Gradle对于我们大多数Android开发者可以说是熟悉又陌生。但这个理由并不足以让我有动力写下这篇文章,其主要因为是这样的:最近参与项目开发,发现项目工程里的的build.gradle比之前接触的的复杂了许多,虽然大部分内容通过表面英文也勉强能看懂,但还是有些内容会让人懵逼。尤其是gradle出错的时候,我第一时间会运用一个非常熟练的技能,ctrl+c问题,ctrl...原创 2019-09-11 14:54:45 · 335 阅读 · 0 评论 -
妥妥的去面试之Android基础(一)
笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下那么先上个正菜预热一下QAQ1.什么是ANR?出现的原因是什么?实际开发中如何解决?ANR在Android中表示应用程序无响应。对于一些事件都需要在一定...原创 2019-02-12 22:58:03 · 202 阅读 · 0 评论 -
上车RxJava2(二)
笔者在上一篇博客介绍了 RxJava 的基本使用和它的线程控制,这篇博客介绍RxJava一个很核心、很牛逼的功能-操作符。RxJava的操作符有很多,主要分为以下几大类:创建操作符、变换操作符、过滤操作符、组合操作符、错误处理符、辅助操作符、条件和布尔操作符等等。每一种类型操作符下又有很多个具体的操作符,笔者在这篇博客介绍其中几个操作符的使用,如果还想学习其他操作符的使用,文章末尾有传送门哦上...原创 2019-01-23 15:22:06 · 383 阅读 · 0 评论 -
妥妥的去面试之Android基础(二)
笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下妥妥的去面试之Android基础(一)接下来开始本篇博客的正菜1.AsyncTask的缺陷?使用时有什么需要注意的点?(1)通过AsyncTask可以更...原创 2019-02-14 19:01:04 · 176 阅读 · 0 评论 -
上车RxJava2(一)
RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。RxJava的观察者模式如果不知道观察者设计模式的话,建议先传送到这里:观察者设计模式RxJava它有四个概念Observer(观察者)Observable(被观察者)subscribe(订阅)事件以上的几个概念和普通观察者模式基本一样,但是RxJava 的事件回调方法除了普通事件 o...原创 2019-01-21 17:06:23 · 219 阅读 · 0 评论 -
一篇文章带你熟悉OkHttp
一、Okhttp的简单使用使用步骤构建网络请求控制对象OkHttpClient构建请求对象request创建Call对象创建接收返回数据的对象response发送网络请求第一步和第二步我都用了“构建”这个词,这是因为这两个对象内部都是通过建造者设计模式来创建的。当请求准备好了后,就开始建立和服务器的连接。连接成功后,执行最后两步,也就是就是发送请求和接收返回数据。1.下面...原创 2018-12-12 12:41:50 · 315 阅读 · 0 评论 -
Android的IPC通信之-SOCKET方式
一、熟悉Socket(1)从它的原意来理解 socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的原创 2017-10-19 16:41:55 · 510 阅读 · 0 评论 -
从零到一之EventBus
一、EventBus是什么1.EventBus是一个Android事件发布/订阅框架 通过解耦发布者和订阅者简化Android事件传递。事件传递既可以用于Android四大组件间的通讯,也可以用于用户异步线程和主线程间通讯等.。传统的事件传递方法包括:Handler、BroadCastReceiver、interface回调,相比于EventBus,EventBus的代码更加简洁,代码...原创 2018-05-05 19:41:31 · 287 阅读 · 0 评论 -
Material Design实战之ToolBar
在UI方面,android之前一直不如于ios,但是有一天android拥有了一把神器之后,它就忌惮于ios了,这把神器就叫做Material Design。所有作为一名优秀的android的工程师,我们也必须打造并拥有这把神器。这里就让我们一起学习使用它吧。我们就把这次修炼命名为:Materia Design-最佳的UI体验 一、第一个Material控件-ToolBar 这个控件和我们之前一原创 2017-11-14 17:07:23 · 738 阅读 · 0 评论 -
Android Studio常用快捷键(Windows/Linux/Mac)
一、在 Studio 内导航和搜索二、编写代码三、构建运行和调试四、重构原创 2018-07-10 10:22:58 · 806 阅读 · 0 评论 -
聊聊Android的消息机制
Android的消息机制简单点说就是Handler的运行机制和它所附带的MessageQueue和Looper的工作过程。Handler、MessageQueue和Looper这三者其实是一个整体。但是我们要想清楚这个整体的工作流程就需要逐个击破。下图罗列了这次分享说的重点一、为什么提供这种机制系统之所以提供这种机制主要是为了解决在子线程不能访问UI的矛盾。那么问题来了…1.为...原创 2018-10-07 19:47:05 · 183 阅读 · 0 评论 -
搬砖之余来一杯意式浓缩咖啡(Espresso基础用法)
就知道,这肯定是杯假咖啡,搬砖还有时间喝咖啡!!!年轻人,别急躁吗,看完之后,你会发现可能真的可以空出一大把时间去喝咖啡了。我信了你的邪了。…,不信?你就往下看呗何为意式浓缩咖啡(Espresso)几种UI自动化测试工具的比较基础用法进阶使用何为意式浓缩咖啡(Espresso)?Espresso是Google的开源自动化测试框架。相对于Robotium和UIAutomat...原创 2018-11-21 17:13:58 · 435 阅读 · 0 评论 -
Fragment的优雅实践并杂谈细节
虽然Fragment设计的初衷是为了大屏幕的平板设备,但走着走着它目前已经广泛应用于我们的手机设备上了。比如下面我们常见的设计就可以使用fragment实现,先来个图片三连:对于这个设计有很多种方式实现,比如可以使用TabLayout+Fragment,不过我想快速且优雅的实现,所以最终借助了一个第三方库实现下面的布局Table,采用了BottomNavigation+Fragment的方...原创 2018-11-19 16:31:06 · 245 阅读 · 0 评论 -
搬砖之余来一杯意式浓缩咖啡(Espresso高级用法)
在上一篇博客笔者介绍了Espresso的基础用法,在文章最后抛出了一个问题,简短的说就是异步的情况下,如何保证测试的正确进行。如果没有看过的,建议先看这一篇,传送门在这里:搬砖之余来一杯意式浓缩咖啡(Espresso基础用法)那么开始这篇博客的正题了明确问题解决方案优雅的实现方式实例演示明确问题在很多时候,我们都会进行网络请求,当进行网络请求的时候,由于网络的原因,我们不...原创 2018-11-22 17:25:50 · 406 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂方法模式,顾名思义,调用工厂里的方法的模式。一、定义定义一个用于创建对象的接口,让子类决定实例化哪个类。主要用于生成复杂对象的地方。二、UML类图三、解读类图1.抽象产品类–类图上的Product接口public abstract class Product { public abstract void product(); }2.具体的产品类-类图上的ConcreteP...原创 2018-12-27 15:17:17 · 197 阅读 · 0 评论