Android基础
文章平均质量分 90
GordonH1991
从事安卓frameworks和app开发
展开
-
java.lang.IllegalArgumentException: No view found for id 崩溃总结
java.lang.IllegalArgumentException: No view found for id原创 2022-03-08 15:28:53 · 8640 阅读 · 4 评论 -
Kotlin contract 用法及原理
contract(契约)是一种 Kotlin 面向编译器约定的一种规则,它帮助编译器更加智能地识别某些需要特定的代码条件,为代码创建更加友好的上下文关联环境原创 2022-01-24 22:44:36 · 4278 阅读 · 0 评论 -
Kotlin sealed class 的使用
sealed class用来表示受限的类继承结构:当一个值为有限几种的类型、而不能有任何其他类型时。在某种意义上,他们是枚举类的扩展:枚举类型的值集合也是受限的,但每个枚举常量只存在一个实例,而密封类的一个子类可以有可包含状态的多个实例原创 2022-01-14 18:56:55 · 2048 阅读 · 0 评论 -
HashMap实现原理分析
HashMap 介绍 HashMap在我们的日常开发中非常常见,其本质就是基于数组和链表组合实现。它提供了很方便的key-value的存取接口,通过对key进行Hash计算散列存储位置和快速查找,HashMap允许key和value为null。HashMap并不是线程安全的,如果存在多线程存取操作容易出现注明的ConcurrentModificationException异常。其存储方式可以...原创 2018-04-06 18:16:46 · 342 阅读 · 0 评论 -
Leakcanary检测泄漏流程原理分析
内存泄漏指的是程序在向系统申请分配内存空间,使用完毕后未释放,结果导致一直占据该内存单元,程序无法再使用该内存单元原创 2021-12-30 20:16:24 · 1144 阅读 · 0 评论 -
Android Handler 源码以及原理分析
Handler 源码分析Handler 简介Handler 是 Android 重要的通信工具,一个 Handler 关联有且仅有一个 Thread 、Looper 和 MessageQueue,它依赖于 Looper 和 MessageQueue 分发 Message 和 Runnable 对象在 Handler 绑定的线程中执行一些操作。创建 Handler 时默认绑定当前所在的 Thread,也可以通过手动绑定 Looper 对象设置 Handler 运行所在的 Thread。Handler 的消原创 2020-10-04 15:36:47 · 187 阅读 · 0 评论 -
Android 跨进程接口回调
简介同进程接口回调在开发中经常可以用的到。方法就是A实现一个interface,并且向B传入一个interface实例引用C,然后B在必要的时候调用C的方法,以此实现接口回调。其实是可以将interface的方法直接声明并实现在A中,并且通过向B直接传入A的对象引用也可以实现相同的效果,但是基于java多态和抽象的特性,通过传入一个interface的引用可以让调用者B并不用关心传入的具体是谁的引用原创 2016-08-14 15:02:04 · 4884 阅读 · 0 评论 -
Android ListView 动态设置ItemView高度为0隐藏Item
前言 在使用Adapter加载ItemView时应该使用:inflater.inflate(R.layout.my_layout, parent, false); 不然会导致ItemView的高度仅仅是wrap_content,除非在my_layout中再嵌套一层Layout并指定高度。 隐藏ItemView 设置某一项Item的高度主要是设置该ItemView的高度,我们可以在get原创 2016-08-28 18:41:26 · 4278 阅读 · 3 评论 -
Activity findViewById 原理分析
在日常Android开发当中,实例化View的对象都通过findViewById方法传入对应的View的Id得到View的实例。但是在View较为庞大的界面当中,则会出现相当一部分的代码块去做View初始化,显得代码比较“冗余”(对于这个冗余我不太认可,毕竟肥而不腻的写法无伤大雅,也方便代码阅读)。对此,有开源的框架ButterKnife解决了这个问题,它通过APT,在编译代码时动态生成...原创 2018-05-22 23:23:08 · 1413 阅读 · 0 评论