一. 类(Class) 与类型(Type) Kotlin 中类和类型是不一样的概念。 下图充分展示了它们的区别。 二. 型变 型变是指类型转换后的继承关系。 Kotlin 的...
一. 类(Class) 与类型(Type) Kotlin 中类和类型是不一样的概念。 下图充分展示了它们的区别。 二. 型变 型变是指类型转换后的继承关系。 Kotlin 的...
努比亚技术团队原创内容,转载请务必注明出处。当用户抱怨手机在使用过程中存在卡顿问题的时候,会严重影响用户对手机品牌的好感和应用APP的体验,从而导致用户对手机品牌的忠诚度降低...
在上篇文章中,和大家一起聊了聊AppBarLayout和CoordinatorLayout两个新控件,以及CoordinatorLayout与FloatingActionBu...
在前面两篇MD系列的文章中,通过两个案例基本上能够掌握了CoordinatorLayout与AppBarLayout的配合使用。本文我们回过头来详细聊聊AppBarLayou...
ReferenceQueue 引用队列,在检测到适当的可到达性更改后,垃圾回收器将已注册的引用对象添加到该队列中 实现了一个队列的入队(enqueue)和出队(poll还有r...
参考:【Android开发】如何快速知道某个so来源于哪个库[https://blog.csdn.net/eieihihi/article/details/109289312...
快捷键又称为“热键”,多个按键的组合可以实现某些快速操作,例如Window中最常用的Ctrl+C和Ctrl+V,熟练使用快捷键可以大大提高开发效率并可以减少某些错误的发生。A...
问题产生 使用 RecyclerView 调用 adapter.notifyDataSetChanged() 方法时,RecyclerView数据刷新闪烁。 Recycler...
前言 为什么view.post()能保证获取到view的宽高?本文将手把手带你深入源码了解view.post() 原理。 背景 业务需求代码开始时机一般是在:Activity...
1、前言 众所周知在Android中,子线程是不能更新UI的; 那么我在想,为什么不能,会产生什么问题; 是否真的就一定不能在子线程更新UI; 2、能否在子线程中更新UI 答...
kotlin的内联函数属于kotlin的高级特性了,也是不同于java的区别之一;至于为什么kotlin要使用内联函数,当然肯定是有它的好处的, 首先看下方法的调用流程 调用...
一、为什么需要 WebSocket 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单...
通常我们在开发即时通讯App时,在Android 8.0以上的悬浮通知(横幅通知)无法显示,只能在通知栏里看到。为了用户体验,我们需要得知横幅通知的开启状态,并跳转相关设置页...
一、BuildType 属性以及方法。 下面简要介绍下BuildType的属性以及方法,更多详情,可以参阅:BuildType详情 1、属性 2、方法 二、构建类型(Buil...
一、源集 1、定义:Android Studio 按逻辑关系将每个模块的源代码和资源进行分组,这个分组叫做源集。2、main Module 源集包括其所有构建变体共用的代码和...
1.Android Studio安装 下载地址:https://developer.android.google.cn/studio/android studio安装完后要在...
Android 绘图学习 ComposeShader,PorterDuff.mode及Xfermode 1 ComposeShader 简介 ComposeShader 组合...
好的软件的作用是让复杂的东西看起来简单。 java中协变跟逆变是对泛型类的继承关系的表述.如:List<Number> 和List 之间是没有继承关系的.但是直观上会觉得,...
线程的概念 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 线程的特点 在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作...