随笔博文

  • iOS老司机的App启动优化Tips, 让启动速度提升10%

    前言评价一个App是不是一款出色的应用, 第一印象很重要.这就要求我们必须把App的启动速度的优先级排的很高, 设想一个场景, 点击了App图标, 3秒过去了, 依然还卡在启动状态.这是令用户难以接受的事.要想解决问题, 首先要对问题有个全面的认识.下面我们就App启动流程及启动优化实操层面, 做一个抛砖引玉的探讨, 如有错误, 请评论区指正, 先行谢过了:)1. iOS启动流程分析App的启动可

    2022-12-20 michael007js 650

  • 这10张图拿去,别再说学不会RecyclerView的缓存复用机制了!

    ViewPager2是在RecyclerView的基础上构建而成的,意味着其可以复用RecyclerView对象的绝大部分特性,比如缓存复用机制等。作为ViewPager2系列的第一篇,本篇的主要目的是快速普及必要的前置知识,而内容的核心,正是前面所提到的RecyclerView的缓存复用机制。RecyclerView,顾名思义,它会回收其列表项视图以供重用。具体而言,当一个列表项被移出屏幕后,R

    2022-12-20 michael007js 58

  • 为什么LiveData的观察者必须处于主线程中

    前言在我的上一篇*为什么Google要将LiveData设计成粘性的*文章中,有一位爱思考的小伙伴留下了这么一个评论。在看到这个评论后,我产生了两个疑问?LiveData的观察者对象必须得处于主线程中吗?究竟是什么原因让Google这么设计,正是这位小伙伴所述的原因吗?由此有了这篇文章,再次感谢这位小伙伴的留言探讨。观察者对象必须得处于主线程中吗?先说答案:是的,LiveData的观察者对象必须处

    2022-12-20 michael007js 135

  • 关于ViewModel的这几个问题,你都知道吗?

    前言作为一名Android开发者,如果你熟悉MVVM架构,熟悉Jetpack组件,那么相信你肯定使用过ViewModel。正如它的名字一样,它是Google推出的一个类,方便我们实现MVVM架构中的ViewModel层。我们在其中处理View层所需的数据,然后在特定条件下通知View层进行UI更新。正如官方所介绍:ViewModel 类以注重生命周期的方式存储和管理界面相关的数据。ViewMode

    2022-12-20 michael007js 99

  • 为什么Google要将LiveData设计成粘性的

    前言相信很多人在职业生涯的面试过程中都被问过一个问题?面试官:我看你简历上有写 LiveData,那你能说说 LiveData 是粘性的吗?这确实是一个值得深入思考的知识点,今天就让我们站在Google设计者的角度来深入学习一下LiveData。LiveData是粘性的吗?关于这个问题,我们首先应该知道,粘性是什么意思?不知道你对EventBus熟不熟悉,我第一次接触粘性这个概念,就来自于Even

    2022-12-20 michael007js 85

  • EventBus 源码解析(很细 很长)

    前言相信大家都用过EventBus这个开源库,它基于发布/订阅者模式用于组件间的沟通,解耦合避免出现回调地狱,使用起来十分简单也很好用。这样的开源库是很值得我们学习的,今天就来学习一下他的源码与设计思想。 使用方法使用方法很简单,按照官方文档介绍,分为三个步骤。步骤1:定义事件public static class MessageEvent { }复制代码步骤2:准备订阅者定义订阅方法,来处理收到

    2022-12-20 michael007js 86

  • 我尝试以最简单的方式帮你梳理 Lifecycle

    前言我们都知道 Activity 与 Fragment 都是有生命周期的,例如:onCreate()、onStop() 这些回调方法就代表着其生命周期状态。我们开发者所做的一些操作都应该合理的控制在生命周期内,比如:当我们在某个 Activity 中注册了广播接收器,那么在其 onDestory() 前要记得注销掉,避免出现内存泄漏。生命周期的存在,帮助我们更加方便地管理这些任务。但是,在日常开发

    2022-12-20 michael007js 42

  • 安卓APP全局黑白化实现方案

    在清明节时各大APP都会进行黑白化处理,当时在接到这个需求的时候感觉好麻烦,是不是又要搞一套皮肤?然而在一系列搜索之后,找到了两位大神(鸿洋、U2tzJTNE)的实现方案,其实相当的简单!让我们一起站在巨人的肩膀上来分析一下原理,并思考会不会有更简便的实现?一、原理两位大神的置灰方案是相同的,都能看到一段同样的代码:Paint mPaint = new Paint();ColorMatrix mC

    2022-12-16 michael007js 80

首页
关于博主
我的博客
搜索