-
探索Koin框架:简单、灵活的依赖注入解决方案
总览koin框架是一个纯Kotlin实现,使用KotlinDSL去描述对象注入和对象间依赖关系以及创建规则。站在使用方的角度,我们需要理解Koin下面的几个组成部分:Koin:Koin框架的使用入口,Koin自身核心功能的实现处Definition:定义,指的是我们写在dsl里面的对象关系、创建规则的相关定义Scope:对象生命周期的管理者Factor... -
Android采用Scroller实现底部二楼效果
需求在移动应用开发中,有时我们希望实现一种特殊的布局效果,即“底部二楼”效果。这个效果类似于在列表底部拖动时出现额外的内容区域,用户可以继续向上拖动查看更多内容。这种效果可以用于展示广告、推荐内容或其他信息。效果实现后的效果如下:当用户滑动到列表底部时,可以继续向上拖动,显示出隐藏的底部内容区域。底部内容区域可以包含任意视图,如RecyclerVie... -
为什么 kotlin 使用协程,放弃多线程
我们都知道协程好,那么协程相比于线程好在哪里呢,这篇文章我们一起聊聊kotlin使用协程的原因。低内存开销协程的内存开销非常低。与线程相比,协程只需要少量的内存来维护其状态和堆栈。一个线程通常需要分配1MB左右的堆栈空间,如果是300个线程就需要300MB左右的虚拟内存。而一个协程的堆栈则是动态增长的,初始分配的内存非常小,通常在2... -
多线程同步必学:CountDownLatch的核心原理与应用
CountDownLatch是Android平台中常用的线程同步工具类,它可以让一个或多个线程等待其他线程完成某个任务后再继续执行。它通过一个计数器来实现,计数器的初始值可以设置为一个正整数,每当一个线程完成任务后,计数器的值会递减1。当计数器的值递减到0时,等待的线程才会被唤醒,继续执行后续的操作。CountDownLatch经常用于... -
抖音 Android 性能优化系列:启动优化实践
启动性能是APP使用体验的门面,启动过程耗时较长很可能使用户削减使用APP的兴趣,抖音通过对启动性能做劣化实验也验证了其对于业务指标有显著影响。抖音有数亿的日活,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音Android基础技术团队在体验优化方向上的重中之重。在上一篇启动性能优化之理论和工具篇中,已经... -
抖音 Android 性能优化系列:启动优化之理论和工具篇
启动性能是APP使用体验的门面,启动过程耗时较长很可能导致用户使用APP的兴趣骤减,抖音通过对启动性能做劣化的AB实验也验证了其对于业务指标有影响显著。抖音拥有数亿的用户,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音Android基础技术团队在体验优化方向上的重中之重。本文基于过往对抖音Andro... -
Android Jetpack MVVM 实战:登录功能
前言--登录作为应用程序的核心功能之一。其代码是否易于理解、维护和测试于应用的稳定性至关重要,为了达到这个目标,开发人员需要选择适当的架构和模式来组织和管理登录流程。AndroidJetpack提供了一套强大的工具和组件,其中包括MVVM(Model-View-ViewModel)架构模式,为我们提供了一种优雅的方式来构建可维护、可扩展且易于测试的应... -
两分钟理解Android中SP与DP的区别
两分钟理解Android中SP与DP的区别Sep5th,2016从一开始写Android程序,就被告知这些常识长度宽度的数值要使用dp作为单位放入dimens.xml文件中字体大小的数值要使用sp作为单位,也放入dimens.xml文件中然后,就没有然后了,仿佛潜台词就是说,你记住去用就行了.偶然有一天,当我们阴差阳错地将字体写成了dp,也是... -
Recyclerview竟能如此丝滑,这14个优化策略不容错过
引言在Android开发中,RecyclerView是一种常用的列表控件,用于展示大量数据。然而,随着数据量的增加,RecyclerView的性能可能会受到影响,导致卡顿、内存泄漏等问题。本文将介绍一... -
ViewModel的生命周期
Jetpack为开发者提供了ViewModel的概念,将页面所需要的数据从V层和M层中剥离出来,ViewModel是介于View层和Model层的一个桥梁,使得视图和数据即区分开来,又能保持联系。生...