首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Android
奔波儿灞取经
创建于2021-06-30
订阅专栏
Android由浅入深
等 73 人订阅
共41篇文章
创建于2021-06-30
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
异步加载的页面框架
只需要重栽两个函数,就能实现一个Activity或者Fragment的渲染逻辑。而且还能大大提高UI的渲染速度。
并发加载数据-让你的页面展示的更快
页面的渲染是UI线程搞的,数据的加载是IO线程搞的,他俩一起开搞那速度不就更快了吗,又何须菊花转呢?
在Flutter中集成Unity踩坑
先反思一下你们为什么要用flutter去集成unity?可不可以不用fluter去集成?如果可以的话,先放弃,用原生去集成吧,本文也不用看了,因为fluter集成实在太坑了,太降低效率了!步步
Android ANR的设计原理
1 ANR的检测逻辑有两个参与者: 观测者A和被观测者B,当然,这两者是不在同一个线程中的。 2 A在调用B中的逻辑时,同时在A中保存一个标记F,然后做个延时操作C,延时时间
BlockCanary源码精简分析
卡顿的来源 通过屏幕渲染机制我们知道:Android的屏幕渲染是通过vsync实现的,软件层将数据计算好后,放入缓冲区,硬件层再从缓冲区将数据读出来绘制到屏幕上,其中渲染周期是16ms,这样我们就看到
LeakCanary源码精简分析
Java四大引用 强引用: 绝不回收 软引用: 内存不足才回收 弱引用: 碰到就回收 虚引用: 等价于没有引用,只是用来标识下指向的对象是否被回收。 弱引用的使用 我们可以为弱引用指定一个引用队列,当
Compose中的简单动画
可见性动画 可见性动画指的是:当View的可见性发生变化时,有一个过渡效果。 其中EnterTransition和ExitTransition重载了plus()运算符,可以直接使用+来进行多个动画的合
Compose中的主题
设置Material主题 Material主题主要包含三个属性: 颜色、排版和形状,API如下: 颜色 排版 这里主要定义了各级标题/副标题,以及内容区的字体属性,至于TextStyle的具体属性可以
将Compose迁移到现有项目中
升级AndroidStudio 你可以升级AndroidStudio为最新版,直接去AndroidStudio官网更新AndroidStudio即可。 升级gradle 你需要升级你的gradle为7
宏观理解JVM&DVM&ART
1 什么是JVM?什么是DVM?什么是ART? 2 它们之间有什么关系? 3 Android是跑在JVM中?还是DV
消失性进度条
其实,说白了就是时间越长,弧度越小,我们做减法即可,我们用(max-current)来作为已读进度,这样随着时间流逝,进度就越来越小。 有人说,这样不对啊,这样(max-current)不就越读越小
Android中的艺术数字
我们不可能绘制出这样的文字,太费劲了,所以我们可以使用0-9这10张数字图片 跟 数字建立个对应关系,然后根据数字去找图片 并 绘制出来即可。 所以我们需要: * 1 提供0-9共10张数字图片。
冒泡排序的进化过程
我们虽然针对冒泡排序进行了多次优化,但是它的时间复杂度还是O(n2),这是无法避免的,因为冒泡排序每次只是交换相邻元素,也就是只消除了一个逆序对,**凡是通过交换相邻元素进行的排序,其时间复杂度都是O
View的几个小工具
Android在5.0以上 Button默认自带阴影效果,这是为了增加立体性和视觉效果,是非常好的。但是TMD,产品一句话: "跟IOS一样!",苦逼的Android开发就要去掉了,我们可以在xml中
Android Vsync原理简析
我们都知道,计算机是基于二进制数据流来进行工作的,而且又知道,计算机五大组成部分是各司其职的,其中屏幕就是专门来"渲染"图像的,既然要显示图像,肯定要有显示的数据,这些数据从哪来呢?答案就是cpu(*
深入理解编译期常量
我们知道,我们从写java代码开始,到代码执行的时候,中间一共经历四个阶段: * 1 新建.java文件 并写代码,这称为**编辑期**。 * 2 将.java文件编译为.class文件,这称为**编
switch-case对String的特殊处理
我们在swtich-case的实现原理与优化中说到,switch-case对String的处理是通过String的hashcode来实现的。
swtich-case的实现原理与优化
语言的底层就是算法,所以switch-case的底层也是算法: 数组和二分查找。 switch-case是一个条件语句,也就是说:
Kotlin协程实现原理概述
协程的顶层实现-CPS 现有如下代码: 我们来将代码SRP一下(单一职责): 可以看到,我们将原来一坨的方法,抽离成了好几个方法,每个方法干一件事,虽然提高了可读性和可维护性,但是代码复杂了,我们来让
内联函数产生原因和原理
为什么要内联函数 因为: Kotlin为了书写简单,所以引入了lambda。 但是: lambda会造成性能消耗。 所以: 引入了内联函数来解决这个问题。 如何证明lambda书写简单 我们来实现个需
下一页