首页
学习
活动
专区
工具
TVP
发布

用户4077185的专栏

专栏作者
56
文章
91481
阅读量
13
订阅数
Android | 关于 OOM 的那些事
Android 系统对每个app都会有一个最大的内存限制,如果超出这个限制,就会抛出 OOM,也就是Out Of Memory 。本质上是抛出的一个异常,一般是在内存超出限制之后抛出的。最为常见的 OOM 就是内存泄露(大量的对象无法被释放)导致的 OOM,或者说是需要的内存大小大于可分配的内存大小,例如加载一张非常大的图片,就可能出现 OOM。
345
2023-05-26
9120
【玩转 Cloud Studio】Android 中关于 OOM 的那些事
Android 系统对每个app都会有一个最大的内存限制,如果超出这个限制,就会抛出 OOM,也就是Out Of Memory 。本质上是抛出的一个异常,一般是在内存超出限制之后抛出的。最为常见的 OOM 就是内存泄露(大量的对象无法被释放)导致的 OOM,或者说是需要的内存大小大于可分配的内存大小,例如加载一张非常大的图片,就可能出现 OOM。
345
2023-05-25
8491
Android | View.post 到底是在什么时候执行的?
相信绝大部分人都使用过 view.post这个方法,且使用场景基本上都是用来获取 view 的一些属性数据,并且我们也都知道,该方法会使用 handler 发送一个消息,并且该消息被回调执行的时候 view 是已经绘制完成的,今天我们来聊一聊它内部的一些细节。
345
2023-05-02
3690
Android | 接入小程序容器FinClip
对于小程序这个词,对于普通的用户而言,确实是一个非常方便快捷的东西,不需要下载app就可以直接使用应用,使用完了可以随时离开,不需要关心安装太多的应用。但是对于 Android 开发者而言,在小程序刚开始的时候,传出了非常大的地震,例如 "小程序时代崛起,App 即将被消灭" 等等,但是这么长时间过去了, App 依然好好的,因为 小程序 目前之恩能够针对那些使用低频率、服务类型、轻量级的 App ,因此,小程序只能被视为一个简单的轻应用,在功能和体验上并不能和原生的相媲美。
345
2023-03-08
1.2K0
Android | 输入系统(IMS)
一般情况下很多同学对于点击事件的认识都只存在于从 Activity 开始的,然后从 Window 中进行分发,甚至有些人可能也只知道 onTouchEvent 和 dispatchTouchEvetn 这几个方法,对于 View 层的了解都不属性。
345
2023-03-08
1.3K0
Android | Activity 启动流程分析
前言 Activity 类是 android 应用的关键组件,在日常开发中,绝对少不了组件。既然用了这么久,你知道他的启动流程🐴?作为一个应用层开发者,大多数人可能觉得学习这些对日常开发可能没有太大帮助。但是多了解一下 framework 的代码还是很有必要的,了解系统组件机制,对于一些问题我们也能快速的定位找到问题的所在点,并且在面试的时候也是一个加分项。 本文基于 Android 12 版本源码,从 startActivity 作为切入点,对整个启动流程进行分析。 Activity 启动方式 启动一个
345
2023-01-30
6670
Android | WMS 解析 (一)
前段时间分析了 Window 的添加、更新和删除流程,也知晓了 Activity 、Dialog 和 Toast 中 Window 的创建过程,今天就接着上篇文章,看一下 WMS 的创建 以及WindowManager 添加 WIndow 后 WMS 是怎样进行操作的。上篇文章点这里直达;
345
2022-11-11
1.2K0
Android | Handler.runWithScissors 解析
看 WMS 代码的时候看到了 Handler.runWithScissors 方法,所以来恶补一下
345
2022-10-31
2080
Android | 自定义格子拖拽填充效果
前言 最近遇到一个需求,需要实现一个格子填充的效果,具体效果如下所示: 📷 分析 格子的拖动效果 整个 View 的边界判断 二维网格边界的判断 拖动后格子填充时的位置判断 网格的绘制 填充后进行复位 实现 @SuppressLint("ClickableViewAccessibility") class DragGridGroupView : FrameLayout { constructor(context: Context) : this(context, null) constru
345
2022-10-05
4420
Android | LiveData 源码分析
LiveData 是一种持有可被观察的数据存储类,和其他可被观察的类不同的是,LiveData 是就要生命周期感知能力的,这意味着他可以在 Activity ,fragment 或者 service 生命周期活跃状态时 更新这些组件。
345
2022-09-27
9470
Android | Compose 生命周期和附带效应
可组合项 应该没有附带效应,但是,如果在对应用状态进行转变时需要使用可组合项。此时你应该使用 Effect API , 以便以可以预测的方式来执行这些附带效应
345
2022-06-12
1.2K0
Android | Compose 状态管理
应用中的状态指的是可以随时间变化的任何值。这个定义非常广泛,例如从数据库到类的变量,页面上显示的提示信息等。
345
2022-06-12
1.5K0
Android | Compose 初上手
Jetpack Compose 是用于构建原生 Andorid 界面的新工具包,Compose 使用了更少的代码,强大的工具和直观的 Kotlin Api 简化并且加快了 Android 上界面的开发。
345
2022-06-12
5.2K0
Android | 计算图片占用内存大小
对于一张图片,你知道应该存放在那个资源目录下面吗,或者说,放在那个资源目录下加载起来更省内存呢?在日常开发中我们可能不太注意这些东西,但是这些却是基础,是必不可少的一环,所以这几天重新温习了一下并整理了一下。
345
2022-04-15
3K0
Android | 理解 Window 和 WindowManager
Window 是一个窗口的概念,是所有视图的载体,不管是 Activity,Dialog,还是 Toast,他们的视图都是附加在 Window 上面的。例如在桌面显示一个悬浮窗,就需要用到 Window 来实现。WindowManager 是访问 Window 的入口。
345
2022-03-25
7720
Android | 理解 ViewRootImpl
ViewRootImpl 是 View 的最高层级,是所有 View 的根。ViewRootImpl 实现了 View 和 WindowManager 之间所需要的协议。ViewRootImpl 的创建过程是从 WindowManagerImpl 中开始的。View 的测量,布局,绘制以及上屏,都是从 ViewRootImpl 中开始的。
345
2022-03-25
8610
Java | 泛型实现机制
泛型的本质是参数化类型,就是将原来的具体的类型参数化。在不确定需要类型的情况下,通过泛型来指定具体的限制
345
2022-03-07
6660
flutter |悬浮窗解决方案 flutter_floating
创建悬浮窗的时候通过 isShowLog 属性控制,不同的悬浮窗 Log 会通过不同 key 显示出来
345
2022-03-07
1.6K0
Flutter | 路由管理
MaterialPageRoute 是 Material 组件库提供的组件,他可以针对不同的平台,实现与平台页面切换动画风格一致切换动画
345
2022-02-15
9070
上手指南 | Dart,随用随查
dynamic:该类型具有所有可能的属性和方法,一个变量被 dynamic 修饰,相当于告诉系统,我知道这个类型到底是什么。使用后再编译时不会推断数据的类型,但是运行时会推断。
345
2022-02-15
1.7K0
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档