
Android
文章平均质量分 89
码途有道
这个作者很懒,什么都没留下…
展开
-
常规的Git管理流程
一、前言Git是目前流行的版本管理工具,大家应该都使用过。虽然Git能为我们的项目管理提供极大的帮助,但是如果使用不当也会造成一些不必要的麻烦,特别是在多人协作的情况下。本文将讲述我们在项目开发中使用的常规Git管理流程。欢迎大家关注微信公众号:Code满满二、Git常规管理流程1、常用的开发分支master 分支 : 主分支,不轻易改动,主要做正式发版使用,一般发版的包都从 master 分支中构建pre-release 分支 : 预发布分支,是在正式发版前的测试使用分支,测试使用的包都原创 2022-03-07 17:55:19 · 5601 阅读 · 0 评论 -
美团是如何使用LiveData搭建通信框架的?
前言之前的文章中我们介绍了LiveData的内部实现,并提出LiveData也可用作应用程序内的通信手段。而目前,网络上也确实有很多相关的实现文章。在众多实现中,来自美团的实现是质量最有保证的。但是美团的实现不止是使用LiveData,还涉及广播、跨进程通信等;本文将从美团的实现中抽取LiveData相关的内容,重新构建一个通信框架(毕竟跨进程等通信手段并不是每个项目都会使用到)。如果有对LiveData内部机制不了解的同学,强烈建议先阅读上篇文章《LiveData为何这么香,这些你都知道吗?》再来看本文原创 2021-04-08 19:58:37 · 547 阅读 · 0 评论 -
LiveData为何这么香,这些你都知道吗?
前言大家好,我是小益!使用Jetpack全家桶的同学相信对LiveData都不陌生,其可以在很大程度上避免内存泄漏、更好的将View层与Model层分离等诸多优点使得LiveData在MVVM模式中开发成为不可或缺的利器。今天我们就将LiveData剖开来瞧瞧,为何它这么香!推荐文章将率先在公众号「Code满满」与个人博客「李益的小站」上发布,快来关注吧!一、LiveData的常用方法LiveData主要是基于观察者机制实现的,LiveData是被观察者,其观察者是Observer,当LiveDa原创 2021-04-07 14:11:46 · 278 阅读 · 0 评论 -
Android开发之MVVM模式实践(六):协程与网络请求的结合
前言大家好,我是小益!在经过前两章对协程的介绍后,我们终于又回到了MVVM的封装。协程在Android开发中最常用的场景应该是网络请求了,其次是一些使用Thread的场景,本章内容我们将着重介绍如何将协程与网络请求结合。推荐文章将率先在公众号「Code满满」与个人博客「李益的小站」上发布,快来关注吧!一、viewModelScope的使用自行创建协程var uiScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)在上述代码中我们原创 2021-04-02 14:39:47 · 3049 阅读 · 2 评论 -
Android开发之MVVM模式实践(五):async/await与suspend使用
前言大家好,我是小益!在上章内容中,我们简单了解了什么是协程以及协程的基本使用,主要提到了协程的launch与withContext用法。但是launch与withContext并不适合用于需要返回结果的并发场景,在并发场景中,我们一般会使用协程的async/await。推荐文章将率先在公众号「Code满满」与个人博客「李益的小站」上发布,快来关注吧!一、async与awiatasync单单从字面意思理解就知道其与异步有关。async也是CoroutineScope的扩展函数,其源码如下:pub原创 2021-04-01 15:26:12 · 2408 阅读 · 0 评论 -
Android开发之MVVM模式实践(三):Fragment的封装
前言大家好,我是小益。本章是Android的MVVM架构实践系列文章的第三篇,上一篇文章主要介绍了Activity的封装,本章主要介绍Fragment的封装。如果有去Github上看过小益的封装案例的同学,会发现上章中Activity的封装以及本篇中Fragment的封装比Gtihub上的案例要简单,相当于是一个简化版本。这是因为小益只是抽取了与MVVM相关的部分放在文章中讲解,Github中的案例除了MVVM部分的封装,还包括了一些常见的基础功能封装。不同的项目有不同的功能需求,大家可以根据自己的项目需原创 2021-03-26 19:45:08 · 1091 阅读 · 1 评论 -
Android开发之MVVM模式实践(二):Activity的封装
前言上篇文章中我们主要讲述了MVVM架构模式中的ViewModel应该如何去封装(《Android开发之MVVM模式实践(一):ViewModel的封装》),本篇文章将介绍Activity在MVVM中的封装。推荐文章将率先在公众号「Code满满」与个人博客「李益的小站」上发布,欢迎大家关注!一、将DataBinding加入Activity的封装Google为MVVM模式开发提供了许多不错的工具,DataBinding就是其中一员。DataBinding是Google于2015年在Android S原创 2021-03-26 19:44:09 · 920 阅读 · 0 评论 -
Android开发之MVVM模式实践(一):ViewModel的封装
前言目前Android开发中,常用的几种项目架构模式分别是MVC、MVP和MVVM。当然根据项目的体量和业务的不同,可能还会对这几种模式进行融合,产生其他变种模式,这个我们暂且不谈。我们本篇的主角是最近越来越受欢迎的MVVM。随着Google在近两年推出了Jetpack系列的工具库后,MVVM的开发模式越来受开发者欢迎,毕竟是Google的亲儿子。对于开发中的MVVM模式,我们主要是依托DataBinding、ViewModel和LiveData这三者来实现。一、对于ViewModel的使用建议Vi原创 2020-07-05 15:06:21 · 9113 阅读 · 1 评论 -
Android进阶(一):5分钟带你了解JVM的内存分配
前言JVM的内存分配是一个老生常谈的话题了,但是如果开发者想要开发出高质量的APP,那么JVM的内存分配是必须要了解的。本文主要介绍JVM的内存分配。JVM的内存区域划分在网上一些介绍JVM内存分配的文章中,他们将Java的内存大致分为堆内存(heap)和栈内存(stack),这种划分的方式,体现了开发者最关注的区域,但是并不完全准确。JVM会将内存划分为若干个不同的数据区域,主要分为:程序...原创 2020-04-27 15:27:56 · 1060 阅读 · 0 评论 -
一个Android开发者自学Python的心路历程
前言本人主要从事Android开发,也做过微信小程序,有时还会在Java那边客串一把(谁让Android是用的Java呢@~@),最近在自学Python,已有半月有余。因近年来,技术迭代快速,前端更是层层爆发,单纯的Android或者IOS开发已经不足以应对市场变化,在这技术大潮下,成为一个复合型开发者就显得尤为重要,所以又去进行了微信小程序开发。然而,如果想要在一个项目中更彻底的了解项目架构与...原创 2019-03-29 09:39:16 · 919 阅读 · 0 评论 -
Android:项目模块化/组件化的架构之路(二)
项目模块化的两种模式目前项目模块化大体可以分为两种模式,分别是submodule和multi-project。根据字面意思,我们就可以很容易理解这两种模式,下面就让我们来具体了解一下这两种模式!submodule模式如上图所示,项目中只有一个project工程,在project中构建多个module组件,每个module都有自己的git仓库,非常直观,这也是我们最常见的模块化架构。优点...原创 2019-01-21 16:20:06 · 2309 阅读 · 0 评论 -
Android:超详细的本地搭建maven私服以及使用Nexus3.x搭建maven私服的讲解
前言在Android开发中,会经常遇到需要将写好的某个lib用于各个不同的项目中。一般的做法,就是将lib直接导入到项目中。但是假如lib有bug,那么所有使用lib的项目我们都要进去修改lib的bug,这样即繁琐,工作量又大。假如我们可以像gralde中添加依赖那样,直接一句implementation 'xxx'代码从maven仓库中调用lib,那么我们就不用再一个一个项目中去修复lib的b...原创 2018-12-06 15:05:31 · 4199 阅读 · 8 评论 -
Android中使用Gradle将指定文件或者文件夹打包成jar
前言因为各种各样的原因,有时需要将项目中指定的文件或者文件夹打包成jar,而我们一般将这种需求放在Gradle中实现。对于Gradle我们并不陌生,我们知道他是Android Stuido的一个自动化构建工具,它是使用Groovy作为主要脚本语言实现的,当你对一些语句不理解时,可以查阅Groovy的相关资料。在下面的实现中,一共分为三步。正文第一步:定义一个Task,用于删除指定位置的ja...原创 2018-12-03 13:45:48 · 4070 阅读 · 1 评论 -
apk 在个别手机上安装失败,提示软件包损坏
前几天,更新APP版本,APP在应用宝上架后,在华为手机和公司其他测试机上可以正常下载安装没有问题,但是在魅族机上却提示安装失败,软件包已损坏,想了很多种可能,像文件残留等,但是都没有效果,最终发现原因是APP的SDK版本问题原因随着Android的快速发展,目前国内的部分市场如应用宝和部分手机已经开始对APP的compileSdkVersion、buildToolsVersion和targe...原创 2018-11-27 12:09:15 · 14549 阅读 · 0 评论 -
Android:项目模块化/组件化的架构之路(一)
随着技术越来越成熟,这两年,组件化开发与插件化开发的热度一度高涨。对于组件化,有的人也喜欢称之为模块化开发,我也比较喜欢称之为模块化开发。使用模块化开发也已经有一段时间了,特此总结一下模块化开发的心得,防止以后忘记。什么是模块化开发对于模块化开发的概念,有的人可能还不是很了解,通俗的来讲就是:将项目中的具体功能模块,如登录、个人中心等,拆分成一个一个单独的module,将其中公用的功...原创 2018-11-13 18:22:59 · 19085 阅读 · 4 评论 -
解析Android ListView工作原理及其缓存机制
解析Android ListView工作原理及其缓存机制 本文转载自:https://blog.youkuaiyun.com/Libmill/article/details/49644743 ...转载 2018-08-30 13:08:57 · 4472 阅读 · 0 评论 -
图片查看器ImageViewer:轻松实现微信朋友圈、今日头条、横向列表、纵向列表等图片浏览效果
ImageViewer关于图片查看器,仿微信朋友圈图片查看效果,支持图片手势缩放、拖拽等操作,全新2.0版本,由1.0版本的Activity模式实现改为自定义View的模式显示,自定义图片加载方式,更加灵活,易于扩展,最低支持版本为Android 3.0及以上…演示点我看demo演示apk体验点我添加依赖Gradle Step...原创 2017-09-29 16:48:39 · 7937 阅读 · 0 评论 -
关于v7包中CardView控件的阴影显示问题
CardView控件的阴影显示问题症状CardView没有阴影重点属性介绍 // 是否使用CardView的padding内边距 app:cardUseCompatPadding="false" 解决方法1 app:cardUseCompatPadding="false"把false改为true方法2 给CardView添加底部Padding ...原创 2018-02-19 19:28:47 · 2819 阅读 · 0 评论 -
Android开发中,常用工具类集合:Sutils,一款轻量级的Android开发工具类库
在Android开发中,我们会用到许多相同的方法,我们经常将这些方法归纳总结到一起,做成一个工具类。SUtils就是一个轻量级的Android工具类库,集成了众多平时开发用到的工具类,以后将持续更新!如果大家在使用中发现什么问题,欢迎大家及时反馈,如果大家有什么好的工具类推荐,也可以反馈给我,加到SUtils中。 添加依赖dependencies { compil...原创 2017-09-11 09:43:58 · 3759 阅读 · 6 评论 -
AutoGridView:轻松实现微信朋友圈九宫格、点击添加更多、点击收起等功能
AutoGridView关于AutoGridView使用ViewGroup实现,可以如QQ空间与微信朋友圈中的照片那种九宫格方式排布(注:此处的九宫格排列不仅仅是可以按照QQ控件那种九宫格排布,只要宫格的个数达到可以开平方的要求(1x1,2x2,3x3,4x4…),都会按照正方形排列),同时AutoGridView也可以实现普通的宫格排布方式。此外AutoGridView还可以控制显示...原创 2017-09-29 17:01:20 · 1871 阅读 · 0 评论 -
使用DataBinding时遇到的问题(1)
报错 Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’. android.databinding.tool.util.LoggedErrorException: failure, see logs for details. Exception while handling step androi...原创 2018-02-22 14:15:23 · 2964 阅读 · 0 评论 -
流布局的简单实现:FlowView(标签流什么的都so easy)
FlowView关于FlowView是一款流布局控件,采用Adapter模式,可以自定义item,更加灵活,使用起来就和ListView与BaseAdapter搭配一样简单,提供各种对齐方式,可以自适应高度,也可以设置item的高度,可以控制item的最大显示行数…演示先来看看效果吧! 添加依赖使用Gradle // 注:如果添加依赖成功,则此句...原创 2017-09-13 11:33:58 · 1836 阅读 · 0 评论 -
基于DataBinding,实现Android所有尺寸屏幕的精准适配
fit-screen使用DataBinding的@BindingAdapter功能实现屏幕精准适配,适用于任何分辨率的手机目录原理优势注意点属性详解使用方法预览问题原理 (必看!必看!必看)本库原理与鸿洋大神的AutoLayout一致,根据UI给出的设计稿的尺寸,将设计稿的尺寸与我们实际的手机的宽高尺寸进行处理换算,获取换算比例ratio,例如设计稿尺寸为...原创 2018-02-16 17:22:01 · 4725 阅读 · 0 评论 -
Android开发中的MVP模式详解
在Android开发中,我们通常会去将项目分成一个个的模块文件夹,来进行管理维护,有的人是直接按照功能来分模块,这也是最常见的,有的人则会按照一定的设计模式,再结合功能来进行项目模式设计,比如MVP、MVVM这两种目前比较流行的项目设计模式,本文主要讲解MVP模式。MVC、MVP、MVVMMVC对于MVC我想大家应该都不陌生,最典型的MVC就是JSP + servlet + j...原创 2017-09-11 12:08:43 · 2473 阅读 · 0 评论 -
带你重新认识:Android Splash页秒开 Activity白屏 Activity黑屏
带你重新认识:Android Splash页秒开 Activity白屏 Activity黑屏 版权声明:转载必须注明本文转自严振杰的博客: http://blog.youkuaiyun.com/yanzhenjie1003本篇博客要剖析和解决的两个问题: 1. APP启动时白屏/黑屏、Activity打开时白屏...转载 2018-04-11 10:02:15 · 409 阅读 · 0 评论 -
项目中针对网络异常、空数据、加载失败等状态的多种状态切换视图
MultipleStatusView关于一个可以用来切换多种状态视图的view,适用于加载失败状态、空数据状态、网络异常状态等场景,同时支持自定义视图!演示添加依赖使用Gradle // 注:如果添加依赖成功,则此句不必添加,此句作用仅为当项目在被审核时,紧急需要使用时添加 allprojects { repositories {...原创 2018-04-28 15:42:13 · 1292 阅读 · 0 评论 -
Android的启动模式:singleTask与singleTop的使用
最近有小伙伴询问Activity的启动模式是使用singleTask好还是singleTop好,在两种模式中纠结,所以今天就简单讲解一下两种模式的使用场景!Android 的四种启动模式(网上一搜一堆哦)standard:默认模式,允许多实例singleTop:相比于standard,有新的启动请求时,只有在目标Activity处于当前栈顶时,才会调用onNewIntent()...原创 2018-08-06 15:48:10 · 46790 阅读 · 2 评论 -
Android中gradle的依赖:implementation与api的使用
当gradle插件升级到3.0.0及以上后,我们会发现在gradle中添加依赖的时候,会推荐你使用implementation或者api,而不再推荐你使用compile,今天就来简单介绍下这两者的使用与区别!让小伙伴们可以有目的的去选择implementation或者api。 apiapi的作用与compile相同,使用api添加依赖,会对外暴露其依赖的module的接口 ...原创 2018-08-07 10:58:30 · 6068 阅读 · 1 评论 -
Android中MVP模式实战版(一)
从入坑android至今已经有三年了,感受颇深的就是项目的架构了。小项目不打紧,但是中大型项目就要仔细考虑了,否则后期维护以及扩展就是个大问题!目前经典的项目设计模式就是MVC、MVP以及MVVM三种,其他还有根据这三种的衍生种类就不说了,而这三种模式中,个人比较推荐的就是MVP了,虽然增加了代码量,但是稳定性很高,利于后期维护和扩展,毕竟谁也保不准小项目就做大了呢!下面内容就主要讲解一下M...原创 2018-08-17 16:12:09 · 1735 阅读 · 0 评论 -
Android屏幕适配方案(出自今日头条)
最近两个月,今日头条公众号里推出的一款轻量级屏幕适配方案火了一把,身边好多小伙伴都不停的转发分享!今天终于有时间来给大家分析一下今日头条提出的适配方案了!各位系好安全带,要开车了!!!前言其实今日头条提出的方案,很早之前就有人提出过[check],但是一直不是传播的很好!直到最近,今日头条正式提出此方案,才使它被快速传播,这里不得不感叹品牌效应的威力!原理本方案的原...原创 2018-08-23 17:09:56 · 6027 阅读 · 1 评论