我的博客

  • 内存优化之掌握 APP 运行时的内存模型

    在上一章,我们已经从操作系统的维度了解了一个进程的内存模型。这一节,我们将维度继续上升,从应用层出发看看一个 App 运行时的内存模型是怎样的。从 App 运行时的内存模型中我们可以知道导致内存增长的源头,从源头出发,可以更有目的去治理内存,还能进一步分析引起增长的代码逻辑或者数据。为了让大家深入掌握 App 运行时的内存模型,这一节的内容按照由外到内、逐步深入的原则,分为了 3 个部分:内存描述

    2022-12-15 michael007js 506

  • 内存优化之重新认识内存

    我们知道,手机的内存是有限的,如果应用内存占用过大,轻则引起卡顿,重则导致应用崩溃或被系统强制杀掉,更严重的情况下会影响应用的留存率。因此,内存优化是性能优化中非常重要的一部分。但是,很多开发者对内存的认识还停留在应用开发这一层,平时只是参考网上的方案,对内存进行比较浅显的优化。想要深入进行内存优化,我们需要从操作系统的层面了解内存是怎么管理的,又是如何被使用的。可能会有人疑问:“为什么做个内存优

    2022-12-15 michael007js 87

  • 安卓语言基础之Kotlin高阶函数——Lambda表达式(二)

    前言上一篇(安卓语言基础之Kotlin高阶函数——Lambda表达式(一) - 掘金 (juejin.cn))我们学习了Kotlin中Lambda表达式与其在集合的函数式API中的使用方法,本篇我们继续学习,去探究Lambda编程在安卓Kotlin开发中的其他地方的运用方法。正篇除了我们上一篇所说的一些集合的函数式API,其实Kotlin中调用Java方法也能用函数式API,也是使用了Lambda

    2022-12-15 michael007js 107

  • 安卓语言基础之Kotlin高阶函数——Lambda表达式(一)

    前言前段时间在技术交流群里看一群大佬在说Kotlin的高阶函数,看起来花里胡哨,对我这个以Java语言为生产工具的安卓开发十分不友好,但是为了能以后和他们一起更好的水群,我开始学习高阶函数,去了解它的魅力。我将本篇归属于安卓开发基础必备系列,因为这部分知识属于开发语言基础知识,此外,高阶函数也是很多人推崇Kotlin的魅力所在。# 正篇首先我们看看Lambda编程,这个编程方式还是我在用Java开

    2022-12-15 michael007js 129

  • 写业务不用架构会怎么样?(三)

    复杂度软件的首要技术使命是“管理复杂度” —— 《代码大全》因为低复杂度才能降低理解成本和沟通难度,提升应对变更的灵活性,减少重复劳动,最终提高代码质量。架构的目的在于“将复杂度分层”复杂度为什么要被分层?若不分层,复杂度会在同一层次展开,这样就太 ... 复杂了。举一个复杂度不分层的例子:小李:“你会做什么菜?”小明:“我会做用土鸡生的土鸡蛋配上切片的番茄,放点油盐,开火翻炒的番茄炒蛋。”听了小

    2022-12-14 michael007js 52

  • 写业务不用架构会怎么样?(二)

    复杂度软件的首要技术使命是“管理复杂度” —— 《代码大全》因为低复杂度才能降低理解成本和沟通难度,提升应对变更的灵活性,减少重复劳动,最终提高代码质量。架构的目的在于“将复杂度分层”复杂度为什么要被分层?若不分层,复杂度会在同一层次展开,这样就太 ... 复杂了。举一个复杂度不分层的例子:小李:“你会做什么菜?”小明:“我会做用土鸡生的土鸡蛋配上切片的番茄,放点油盐,开火翻炒的番茄炒蛋。”听了小

    2022-12-14 michael007js 42

  • Android性能优化 - 把构建布局耗时缩短 20 倍

    布局构建耗时是优化 Activity 启动速度中不可缺少的一个环节。欲优化,先度量。有啥办法可以精确地度量布局耗时?读布局文件以熟悉的setContentView()为切入点,看看有没有突破口:public class AppCompatActivity @Override public void setContentView(View view) { getDelega

    2022-12-14 michael007js 170

  • Android自定义控件 - 源码里有宝藏之自动换行控件

    回想一下在作文本上写作的场景,当从左到右写满一行后,会切换到下一行的开头继续写。如果把“作文本”比作容器控件,把“字”比作子控件。Android 原生控件中没有能“自动换行”的容器控件,若不断向LinearLayout中添加View,它们会沿着一个方向不断堆叠,即使实际绘制位置已经超出屏幕。业务场景自动换行容器控件的典型应用场景是:“动态多选按钮”,即多选按钮的个数和内容是动态变化的,这样就不能把

    2022-12-14 michael007js 243

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