Android
蒙哥的客厅
总要有些随风,有些入梦,有些长留在心中,于是有时疯狂,有时迷惘,有时唱。
展开
-
Kotlin可见性修饰符
Java为我们提供了public、protected、private以及default四个可见性修饰符,用来指定类、方法及属性的可见性。Kotlin中的可见性修饰符与Java中的很类似,但也有不一样的地方,主要有以下几点:Kotlin与Java的默认修饰符不同,Kotlin中是public,而Java中是default;Kotlin中有一个独特的修饰符internal;Kotlin可以在一个文件内单独声明方法及常量,同样支持可见性修饰符;Java中除了内部类可以用private修饰以外,其他类都不原创 2020-11-30 05:10:52 · 1162 阅读 · 0 评论 -
深入浅出Kotlin流程
Kotlin流程(Flow)是由JetBrains公司开发的一种全新的流处理API。JetBrains同时也是Kotlin这门语言的发明者。Kotlin流程是基于反应流规范(Reactive Stream specification)的一个实现,这个规范的目标是为异步流处理提供一个统一的标准。Kotlin流程构建于Kotlin协程的基础之上。关于Kotlin协程的介绍,请参阅我之前的博文《五分钟说清楚Kotlin协程和Android的那点事》。通过使用Kotlin流程来处理数据流,我们只需要编写少量的代码原创 2020-11-16 13:52:59 · 621 阅读 · 0 评论 -
秒懂MVVM模式在Android中的应用
什么是MVVM模式上世纪90年代,软件设计模式的超级大神Martin Fowler在MVC模式的基础上提出了MVP模式。经过若干年的发展,MVP模式又衍生出了MVVM模式。MVVM(Model-View-ViewModel)模式有助于将业务逻辑与UI完全分开,这为单元测试和后期代码维护提供了极大的便利。MVC、MVP和MVVM之间的关系搞清楚MVC、MVP和MVVM之间的关系,对于我们理解和应用MVVM模式有非常大的帮助。MVC和MVP的关系MVP模式是从经典的MVC模式演变而来的。因此,它们的基原创 2020-11-02 10:15:05 · 2168 阅读 · 1 评论 -
如何安全地使用Kotlin协程
在《五分钟说清楚Kotlin协程和Android的那点事》一文中,我们对Kotlin协程可以解决什么问题进行了深入的分析。在本文中,我们将探讨如何如何安全地使用Kotlin协程。跟踪协程协程可以很好地解决两个常见的编程问题:处理长时间运行的任务;确保主线程不被阻塞。协程通过添加suspend和resume操作来实现上述功能。当特定线程上的所有协程都挂起时,该线程就可以执行其他的任务。但是,协程本身并不能跟踪正在的工作。拥有大量的协同程序(数百甚至数千个)并同时将其全部暂停是非常好的。而且,尽原创 2020-10-26 10:39:26 · 675 阅读 · 1 评论 -
五分钟说清楚Kotlin协程和Android的那点事
协程可以解决什么问题?Kotlin协程引入了一种全新的并发编程模式。它可以被用在Android应用开发上,并达到简化异步代码的目的。虽然协程是从Kotlin 1.3才开始被引入的,但协程的概念自编程语言问世以来就已经存在了。第一种支持协程的编程语言是1967年推出的Simula。在过去的几年中,协程变得越来越流行。现在,许多流行的编程语言,如Javascript、C#、Python、Ruby和Go等,都已经支持协程。在Android平台上,协程可以很好地解决以下两个问题:长时间运行的任务是需要很长原创 2020-10-12 04:22:45 · 880 阅读 · 1 评论 -
解密Android图形显示系统
作为Android应用的开发,要想确保用户拥有比较顺滑的体验,就一定要从原理上深入理解Android UI的渲染流程。只有真正理解了UI的渲染流程,才能在Android应用的开发过程中尽量避免影响UI性能的设计和实现,并且能够在UI性能的优化上有的放矢。问题背景人眼在接收到光信号后,会在视网膜上形成视觉影像。光信号的作用结束后,视觉影像并不会从视网膜上立即消失,这种现像被称为视觉暂留。正是由于视觉暂留的存在,使得我们可以通过播放独立帧的方法,形成大脑可以感知的动画。每秒24帧的播放速度是电影的最佳选择原创 2020-09-21 08:26:54 · 611 阅读 · 2 评论 -
你所不知道的Kotlin数组与数据类(data class)
自从Google于2017年正式宣布Kotlin是Android开发的首选语言以来,越来越多的开发者开始使用Kotlin。而数据类(data class)是Kotlin的一大特色。 他们省去了手动编写大量模板代码的工作,例如equals(),hash()和toString()的覆写都不是必须的了。数据类会自动提供正确的覆写。但是,在实际应用中,也会出现例外的情况。让我们看下面这段代码:data class NumArray(val name: String, val values: IntArray)原创 2020-09-06 01:30:14 · 1415 阅读 · 0 评论 -
一文详解AndroidX,再也不会傻傻分不清了
概览AndroidX是Google用来组织安卓支持库(support libraries)的最新方法。在AndroidX出现之前,安卓开发框架提供了许多不同的支持库(support libraries)。遗憾的是很多支持库存在着兼容性的问题。总体而言,安卓支持库(support libraries)的设计是非常混乱的。几乎每个Android项目都使用了如下一些常见的支持库:com.android.support:appcompat-v7com.android.support:recyclerview原创 2020-08-24 06:03:08 · 2204 阅读 · 0 评论 -
从源码剖析Dagger2:Scope和Subcomponent
前言我们接着上一篇博客《从源码剖析Dagger2:Component和Module入门》,继续从源代码级别来深入分析Dagger。本篇博客我们将重点介绍Scope和Subcomponent。Scope在任何编程语言中,对象都是定义在一定的作用域中的。一旦程序离开对应的作用域,该对象就要被销毁。在移动设备上,作用域的功能愈发显得重要。因为移动设备上的内存是有限的,只保留需要用到的对象,可以提高内存的使用效率,保证程序的运行流畅度。MainViewModel只有在MainActivity中被用到,因此它原创 2020-08-15 13:52:33 · 197 阅读 · 0 评论 -
从源码剖析Dagger2:Component和Module入门
前言Dagger导航(Navigation )指的是用户在应用中的前进和后退操作。导航很大程度上和业务逻辑相关。但是,在传统的Android应用开发中,导航需要开发者自己处理,对应的backstack也需要开发者自行维护,与业务相关的导航逻辑也要硬编码在Java代码中。而同时期的iOS应用开发框架早就提出了导航图的概念,并对导航进行了框架级别的抽象和支持。为了解决类似问题,简化Android应用开发,Google在2018年推出了Jetpack。Jetpack是一套库、工具和指南,可帮助开发者更轻松地原创 2020-08-09 07:08:29 · 369 阅读 · 0 评论 -
[Android官方] Jetpack导航组件:实战与分析
前言在Google 2018 I/O大会上,Android Jetpack横空出世。Jetpack是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上。Jetpack包含与Android平台API解除捆绑的androidx.*软件包库。这意味着,它可以提供向后兼容性,且比 Android平台的更新频率更高,以此确保开发者始终可以获取最新且最好的Jetpack组件版本。本文将着重介Jet原创 2020-08-03 07:06:01 · 390 阅读 · 1 评论