- 博客(15)
- 收藏
- 关注

原创 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
1231

原创 深入浅出Kotlin流程
Kotlin流程(Flow)是由JetBrains公司开发的一种全新的流处理API。JetBrains同时也是Kotlin这门语言的发明者。Kotlin流程是基于反应流规范(Reactive Stream specification)的一个实现,这个规范的目标是为异步流处理提供一个统一的标准。Kotlin流程构建于Kotlin协程的基础之上。关于Kotlin协程的介绍,请参阅我之前的博文《五分钟说清楚Kotlin协程和Android的那点事》。通过使用Kotlin流程来处理数据流,我们只需要编写少量的代码
2020-11-16 13:52:59
695

原创 秒懂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
2271
1

原创 如何安全地使用Kotlin协程
在《五分钟说清楚Kotlin协程和Android的那点事》一文中,我们对Kotlin协程可以解决什么问题进行了深入的分析。在本文中,我们将探讨如何如何安全地使用Kotlin协程。跟踪协程协程可以很好地解决两个常见的编程问题:处理长时间运行的任务;确保主线程不被阻塞。协程通过添加suspend和resume操作来实现上述功能。当特定线程上的所有协程都挂起时,该线程就可以执行其他的任务。但是,协程本身并不能跟踪正在的工作。拥有大量的协同程序(数百甚至数千个)并同时将其全部暂停是非常好的。而且,尽
2020-10-26 10:39:26
744
1

原创 五分钟说清楚Kotlin协程和Android的那点事
协程可以解决什么问题?Kotlin协程引入了一种全新的并发编程模式。它可以被用在Android应用开发上,并达到简化异步代码的目的。虽然协程是从Kotlin 1.3才开始被引入的,但协程的概念自编程语言问世以来就已经存在了。第一种支持协程的编程语言是1967年推出的Simula。在过去的几年中,协程变得越来越流行。现在,许多流行的编程语言,如Javascript、C#、Python、Ruby和Go等,都已经支持协程。在Android平台上,协程可以很好地解决以下两个问题:长时间运行的任务是需要很长
2020-10-12 04:22:45
958
1

原创 解密Android图形显示系统
作为Android应用的开发,要想确保用户拥有比较顺滑的体验,就一定要从原理上深入理解Android UI的渲染流程。只有真正理解了UI的渲染流程,才能在Android应用的开发过程中尽量避免影响UI性能的设计和实现,并且能够在UI性能的优化上有的放矢。问题背景人眼在接收到光信号后,会在视网膜上形成视觉影像。光信号的作用结束后,视觉影像并不会从视网膜上立即消失,这种现像被称为视觉暂留。正是由于视觉暂留的存在,使得我们可以通过播放独立帧的方法,形成大脑可以感知的动画。每秒24帧的播放速度是电影的最佳选择
2020-09-21 08:26:54
719
2

原创 从源码剖析Dagger2:Component和Module入门
前言Dagger导航(Navigation )指的是用户在应用中的前进和后退操作。导航很大程度上和业务逻辑相关。但是,在传统的Android应用开发中,导航需要开发者自己处理,对应的backstack也需要开发者自行维护,与业务相关的导航逻辑也要硬编码在Java代码中。而同时期的iOS应用开发框架早就提出了导航图的概念,并对导航进行了框架级别的抽象和支持。为了解决类似问题,简化Android应用开发,Google在2018年推出了Jetpack。Jetpack是一套库、工具和指南,可帮助开发者更轻松地
2020-08-09 07:08:29
426

原创 [Android官方] Jetpack导航组件:实战与分析
前言在Google 2018 I/O大会上,Android Jetpack横空出世。Jetpack是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上。Jetpack包含与Android平台API解除捆绑的androidx.*软件包库。这意味着,它可以提供向后兼容性,且比 Android平台的更新频率更高,以此确保开发者始终可以获取最新且最好的Jetpack组件版本。本文将着重介Jet
2020-08-03 07:06:01
435
1
原创 你所不知道的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
1510
原创 一文详解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
2327
原创 从源码剖析Dagger2:Scope和Subcomponent
前言我们接着上一篇博客《从源码剖析Dagger2:Component和Module入门》,继续从源代码级别来深入分析Dagger。本篇博客我们将重点介绍Scope和Subcomponent。Scope在任何编程语言中,对象都是定义在一定的作用域中的。一旦程序离开对应的作用域,该对象就要被销毁。在移动设备上,作用域的功能愈发显得重要。因为移动设备上的内存是有限的,只保留需要用到的对象,可以提高内存的使用效率,保证程序的运行流畅度。MainViewModel只有在MainActivity中被用到,因此它
2020-08-15 13:52:33
241
关于新浪微博开放平台API和Java客户端的吐槽
周末用了下新浪微博开放平台API和官方发布的Java客户端,感觉可以用两个字形容:坑爹!先说说遇到的几个极其弱智的bug吧:1)分页官方API文档里面对数据分页获取的说明是使用cursor和count这两个参数。其中,cursor指明了起始记录的位置,而count指明了当前每页的记录条数,请求第一页的时候cursor为-1。返回结果会给出next_cursor,指明下一页的起始位置...
2011-07-31 20:45:41
199
Memcached Java客户端2.6.1发布
Memcached是被广泛使用的分布式缓存技术。不同的语言有不同的Memcached客户端程序,对于Java客户端来说,首推Memcached Java Client(http://github.com/gwhalin/Memcached-Java-Client)。这次,Memcached Java Client推出的2.6.1发布版是基于全新的performance分支,具有如下重大改进...
2011-06-25 18:11:24
139
Linux 0.11内核编译和bochs上的实验环境的搭建
最近决定开始阅读Linux 0.11的源代码。 学习Linux操作系统的核心概念最好的方法莫过于阅读源代码。而Linux当前最新的源代码包已经有70MB左右,代码十分庞大,要想深入阅读十分困难。而Linux早期的0.11版本虽然有诸多局限,但是具备了现代操作系统的完备功能,一些基本概念沿用到了当前版本,并且代码只有300KB,非常适合阅读。 阅读源代码之前首先需要搭建实验环...
2011-06-22 14:38:07
519
原创 Memcached Java Client 推出全新分支啦
这次,Memcached Java Client推出名为performance的全新分支,具有如下特点:较之老版本,在性能上有300%左右的提升兼容老版本,用户无须修改自己的源代码支持多个memcached协议,包括text,udp和binary协议支持自定义的对象序列化方法这个分支由Schooner Information Technology贡献。源代码在githu...
2010-02-01 16:23:57
135
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人