androidstudio学习总结_Android 开发工程师自述:2年的开发,我总结了7条经验

全文共3547字,预计学习时长11分钟

1ed110e24f674ecfb34316aefb159146.png

“纸上得来终觉浅,绝知此事要躬行。”

“没有调查就没有发言权。”

“实践出真知。”

古今中外,无数名言警句都告诉我们实际去做一件事的重要性。

f029eb22ddadd65889cb93f293ceb0f6.gif

笔者从最初对安卓开发萌生兴趣到现在已有两年之久了,期间做过几个项目也开发过别的,今天就跟大家分享一下这段时间里笔者亲身总结的7条经验。

1.第三方库:找到正确的平衡点

1d9e7523650ee362ec6655dfdb96c5ad.png

Android Arsenal上的一些库

在开始第一个项目时,所有的操作笔者都想从零开始,然后几乎是把第三方库打入了冷宫,本想着自己可能以这种方式会学到更多的东西。

兴许是第一个项目,不用第三方库也行,但这通常是不可取的。最后无非是浪费大量的时间“造轮子”(指业界已有公认的软件或库),所以千万别这样。

有了第一次的经验,笔者开始使用开源库。任何情况下都会有免费的库,这点非常好。所以就添加了一个库,结果根本停不下来。

猜猜后来怎样了?笔者的项目到最后就是杂七杂八的第三方库扭为一体。所以及时止损吧,好好选库。不是所有的都靠谱,况且不一定好上手。

笔者的建议就是寻找平衡点。如果在开发的过程中遇到难题,而这个难题恰巧是别人用某个库完美解决的,那就这个库没错了。要是需要HTTP客户端,选它—— Retrofit。

71ff592881992ec9120bea29e78c2c73.gif

如果下载和管理的图像很多的话,就用 Glide,这些库绝对好用,还稳定,谁人都知道。

但记住不是所有的库都会这么美好。最好每次都查查这些库出自何方神圣,有时间的话再研究一下开源代码,看看问题是如何解决的。

Android Arsenal几乎动用了所有可用的安卓库来维护大型数据库。

2.从一开始就选对架构

你听说过类似于MVC、MVP、MVVM这样的缩略词吗?它们代表不同的软件架构,而且都是需要了解的。

很多小白是在activity类中敲代码,刚开始这样似乎行得通,但相信我,这件事没这么简单。

项目越大,代码就会越复杂还高度耦合,使得后续的测试、维护、新功能的研发变得非常棘手。

所以才推荐大家从一开始就选用一目了然的软件架构。如上文提到的这些架构各有千秋,下面是迄今为止谷歌推荐的App架构:

43196d09a61e3dda49c3e28fb638b503.png

安卓开发员推荐的App架构

从图中可以看出,每一个部分仅由下部与其相连的组件决定。

这样就会带来一致的用户体验,不仅考虑到了关注点分离(separationof concerns),还针对测试和可扩展度进行了优化。很显然,任何架构都有不完美的时候,就像谷歌说的一样:

根本不存在一个架构能满足任何软件的情况。言外之意,对于大多数软件和工作流,从一开始就使用推荐的架构会是好的开端。

由于不是本文的重点,笔者不会对该架构展开过多的解释,但会给大家列举一些有用的资源:

l app架构的指南

l 安卓架构组件的基础样本

3.重要的事情说三遍:测试测试测试

5beb0d1738d972569032d4ed873d8b39.gif

你曾多少次想过:“在手机上测试app,发现成功了!”

其实并不够,简单的测试可能会在开发时让你少费几天功夫,但做起来可就要搭上好几周的时间了。

产品发布前,做足测试可以帮助我们检查系统的鲁棒性、操作性以及可用度。

那该如何测试app呢?这个问题可就太宽泛了,测试类型五花八门,各个都有自己的使命。

4def80635fbd743d5aa14867907638ea.png

安卓开发员提供的测试等级

在了解上图的基础上,可以将测试分为以下三类:

l 单元测试:一次使用一个类来验证性能类别。

l 集成测试:验证模块内不同层次堆栈间的交互以及相连模块的交互。

l UI测试:验证用户界面和用户流

基于app的用例,需要自行决定进行多少种不同测试。

谷歌的经验法则建议---将测试分为70%的小测验(单元测试),20%的中等测试(集成测试)和10%的大型测试(UI和端到端测试)。

l 在安卓平台上测试应用:这里讲了测试应用所需的所有东西

l 在安卓上测试驱动开发(TDD):Google I/O 2017的关于TDD的视频会议

4.Android Studio ,我们的好伙伴

无可厚非,我们已经利用了IDE(集成开发环境),但真的其物尽其用了吗?

Android Studio里内置了很多有助于软件开发的工具,下面列举了一些笔者最常用到的:

l 设备模拟器可以对不同设备上、各种安卓版本的应用程序进行测试。

l 安卓PK分析器可以通过对APK大小的检测分析出程序的大小。

l 实时性能分析器(Realtime Profilers)可以对CPU、内存和网络使用情况进行实时统计分析。

l Firebase助手可以将应用程序与其联系起来,只需几步操作即可将所有Firebase服务都添加上。

l Vector Asset Studio可以帮助给每个密度(密度指磁盘存储数据的可用空间)创建新的位图图像。

你知道Android Studio还有一个功能是将PC变成“烤炉”吗?

4a0172beea614c62da32feb01d11e904.png

更多介绍和功能请参见Android Studio

5.简单清晰的用户界面(UI)

如果在一家大型企业当安卓开发员,UI和UX的设计就是设计者的事了,程序员们大可不必担心。

不过要是初创企业或是私人项目,可能就得费些心思设计UI和UX。相信我,好的界面会锦上添花,而糟糕的界面会毁了一个好项目。

“用户界面就跟笑话一样,你若解释它,就证明它还不够好。”——马丁·勒布朗(Martin LeBlanc)

过去笔者常犯的一个错误就是用户界面上放的东西太多,元素过多只会给用户带来困扰,还会让别人觉得没有美感。建议大家从简,简单且清晰。

特别是不擅长设计的人更要避讳这一块,尽量做用户一看就懂的基础界面。成形后可以进行改进使其更美观,这样用户会留下更深的体验印象。

记住通过不同大小的显示器和DPI来测试UI,不要用固定的测量单位,比如px;多用动态的单位,比如用dp(或测试文本的sp)。

l Dribbble:里面汇集了各路神仙,不知道从哪下手,可以在这上面寻找灵感。

l 材料设计语言(Google Material Design):该系统适应性强,为设计最佳用户界面提供了指导、组件和工具系统。

l 《设计心理学》(The Psychology Of Everyday Things):唐·诺曼写的这本书讲了日用品的可用性设计,值得一看。

6.发布清单(Release Checklist)

74522c48f1035c9dab17a3403b117f13.png

现在觉得自己的应用程序可以发布了?真的吗?你怎样肯定呢?这个时候,千万不可草率行事,最好问自己几个问题:

l 是否移除了所有纠错代码?

l 测试足量吗?

l 在构建Gradle时,是否更新了名称和版本代码?

l 是否启用了Proguard 来混淆APK代码?

l 是否对应用程序进行了本地化操作?

l 是否在Google Play上准备了开发者账户?

如果答案都是“嗯”,那就可以继续自己的计划了。笔者建议大家做一个Android App Bundle (aab)来优化应用程序的大小和资源,而非APK。

在 Google Play发布应用程序后,要不断查看用户的反馈和所有的分析数据。这对程序的改进有非常大的帮助。

这是安卓开发员提供的检查清单,不容错过。

7.要用Git

Git是版本控制系统(VCS),它最基本的两大作用:一是追踪文件的变动,二是简化由多个开发员参与的大型项目中的工作。

我也不知道自己为何会用Git,其实直接给项目进行备份也可以。——来自三年前的我

现在笔者知道了。

并且告诉大家:程序员们需要Git,它对工作流的帮助简直妙极了。(这句话要是三年前有人跟我说就好了)。

Git妙在何处?理由如下:

l 资源代码安全地储存在云端,随用随取。

l 所有以往的代码版本都可使用,可以检测旧版本,而且出现错误时可以回到以前的版本。

l 团队工作得到了简化。每个开发员都可以在并行分支上进行工作,有需要时合并更改。

l 能开发数以千计的开源项目。

l 有GitHub和BitBucket这样的平台,创建并展示自己项目的介绍也可以实现。

理由千万条,而笔者希望这些足以传递一条信息:认为自己不需要Git,是错的。

GitHub和BitBucket指南帮你上手Git

74b7e6ecaf7c56f90f40a49105603ff2.png

今天,笔者分享了一些自己在安卓开发期间亲身学到的东西,但肯定有更多的知识有待探索。

如果大家有其他宝藏级建议,尤其是适合初学者的,请在下方踊跃留言哦。

1ee657856790dbc469b8635cb5f928a1.gif
e11b9478f720443a04852d3b4dafccea.png

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php抓取统计局区划代码,抓取国家统计局的代码和名称,爬取,区域,划分,及

from bs4 import BeautifulSoupimport pandas as pdimport requestsheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36}获取一级代码、名称、下一级链接通过设置参数originUrl来调…

XMPP聊天之Openfire 的安装和配置---Mac OS

2019独角兽企业重金招聘Python工程师标准>>> 一、下载并安装openfire 1、下载最新的openfire安装文件 官方下载站点:http://www.igniterealtime.org/downloads/index.jsp#openfire openfire是服务器,下面还有一个spark,这个是一…

物理学十大著名经典实验!你知道几个?

科学实验是物理学发展的基础,又是检验物理学理论的惟一手段,特别是现代物理学的发展,更和实验有着密切的联系。现代实验技术的发展,不断地揭示和发现各种新的物理现象,日益加深人们对客观世界规律的正确认识&#xff0…

5码默认版块_5个小众的生活学习类的宝藏App

今天分享 5 个宝藏 App ,每一个都是小众冷门,每一个都是自己用心挑选,相信可以让你眼前一亮。所有 App 下载方法文章末尾提供。1 卡片日记卡片日记是一个颜值极高的卡片日记软件,它备受好评,可以说你用过就知道好用&am…

CSS/DIV网页设计视频教程目录【转】

CSS/DIV网页设计视频教程目录 欢迎您来到前沿视频教室,下面列出的是CSS/DIV网页设计视频教程列表。这组视频教程是配合《精通CSSDIV网页样式与布局》图书制作的,每一课对应于图书中的每一章。 我们还会不断地推出相关的课程, 如果您有兴趣&am…

世界上最伟大的十大公式

▲ 点击查看英国科学期刊《物理世界》曾让读者投票评选了“最伟大的公式”,最终榜上有名的十个公式既有无人不知的112,又有著名的Emc^2;既有简单的-圆周公式,又有复杂的欧拉公式……这些公式不仅仅是数学家和物理学家的智慧结晶&a…

区块链浏览器_全球首款区块链浏览器是啥名堂?傲游6首发体验

[PConline 应用]沉寂多年的傲游浏览器终于准备发布大版本更新了,这次为大家带来的是傲游浏览器6,一个被官方称为“世界第一个区块链浏览器”的新版本,那么,有何特色呢?我们一起来看看吧。傲游浏览器6(后简称傲游6)在安…

ASP.NET Core官方文档+源码,这样学效率高10倍!

.NET Framework停更一年了,学习.NET Core跨平台是大势所趋。如何快速学习ASP.NET Core?在我看来,先看微软ASP.NET Core5.0官方中文文档,再大致读一遍源码,最后结合一些场景做些扩展封装,就可以很轻松的驾驭…

WPF 2D绘图(2)Geometry

Shape是对Geometry的一种封装,Shape本质上还是通过绘制Geometry的形状,然后以填充笔刷来呈现效果 如Rectangle <Path Stroke"Black" StrokeThickness"1" Fill"#CCCCFF"><Path.Data><RectangleGeometry Rect"30,55 100 30&qu…

Windows Server 2008 R2 之三十故障转移群集(二)

五、群集的管理破坏群集&#xff1a;一个两节点的群集&#xff0c;对于第一个节点必须在“节点”中选择“退出”才能退出群集&#xff1b;对于第二个节点&#xff0c;必须在下图选择“破坏群集”才能退出群集。配置服务和应用程序&#xff1a;节点&#xff1a;存储&#xff1a;…

提升心力---摆脱拿着锤子看啥都是钉子

从程序员到一个团队的管理者&#xff0c;这中间需要经过一次又一次的蜕变&#xff0c;最终才能变得处理任何事情都得心应手。韩非子曾说&#xff1a;下君用己之力、中君用人之力、上君用人之智。大部分的管理者可能都处在用人之力的阶段&#xff0c;并向着用人之智前进。最近看…

curd什么意思中文_每日一句英译英:She's a ten什么意思?

每日一句英译英&#xff1a;Shes a ten什么意思&#xff1f;用一句“没头没脑”的英语句子劈头盖脑就问你“中文什么意思&#xff1f;“&#xff0c;这是典型的把英语当纯粹知识学习的例子&#xff0c;也是“只求答案&#xff0c;不问过程”的应试思维模式。“知识海洋”浩瀚无…

你家猫砸东西是不是也专挑贵的砸?

1 这猫也太会了吧&#xff1f;▼2 哥哥坐地上耍赖想让爸爸抱被妹妹出手摆平了▼3 好可爱的校车▼4 也许人家只是想静静呢&#xff1f;▼5 最近很流行的【泼花成画】▼6 妹妹的表情简直学到了精髓▼7 介绍一下&#xff0c;这是一只阿拉斯猪和阿拉斯小猪崽儿▼你点的每个赞…

SQL Server 分区表 处理海量数据

你是不是也在苦苦寻求优化自己的SQL Server数据库的方法?如果你的数据库里有不少非常大的表格&#xff0c;分区功能能够帮到你很大的忙…… 【IT专家网独家】你是不是也在苦苦寻求优化自己的SQL Server数据库的方法?如果你的数据库里有不少非常大的表格&#xff0c;分区功能能…

第十一周项目3-程序的多文件组织

下面的程序中的代码分别保存在两个文件中&#xff0c;利用多文件的方式组织。 mian.cpp /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称&#xff1a;temp.cpp*作者&#xff1a;邵帅*完成时间&#xff1a;2014年11月5日*版本号&#xff1a;v1.0 */ #in…

st link v2引脚连接_ST-Link资料02_ST-Link固件介绍,及固件命名规则

说明&#xff1a;本文原创作者『strongerHuang』本文首发于微信公众号『嵌入式专栏』&#xff0c;同时也更新在我的个人网站&#xff1a;EmbeddedDevelop一、写在前面一些人可能看了上一篇关于ST-Link的内容&#xff0c;就会产生疑惑。。。ST-Link有那么多硬件版本&#xff0c;…

奇妙的数学动图,美到令人窒息!

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;制造科技原理&#xff0c;版权原作者所有。如有侵权联系删除&#xff01;论文查重券 限时免费领 官方授权 安全保障 真实有效点「在看」的人都变好看了哦

matlab井深测量,一种井深测量系统及方法与流程

本申请涉及钻井技术领域&#xff1a;&#xff0c;尤其涉及一种井深测量系统及方法。背景技术&#xff1a;&#xff1a;在钻井施工中过程中&#xff0c;施工人员需要实时了解井深的变换情况&#xff0c;因此&#xff0c;需要在钻井的过程中实时对井深进行测量。。目前&#xff0…

搞怪菜鸟加入域全程图解[为企业部署Windows Server 2008系列十二]

在前面部署完毕了windows server 2008的服务器。那么现在我们需要考虑的是如何将客户端加入域。很多朋友在企业实际生产环境中经常遇到加入域的问题&#xff0c;那么在windows server 2008 域环境中呢&#xff0c;如何排除这些问题&#xff0c;本次课程就以雷人故事的角度专门为…

怎样让电脑速度变快_硬盘在电脑中起什么作用?

计算机中的所有数据都保存在硬盘上&#xff0c; 很简单&#xff0c;硬盘的作用就是存储数据。一、补充&#xff1a;1、移动硬盘(Mobile Hard disk)顾名思义是以硬盘为存储介质&#xff0c;计算机之间交换大容量数据&#xff0c;强调便携性的存储产品。2、市场上绝大多数的移动硬…