android进阶问答

Q:最近看到很多文章都在说MVP怎么怎么好,还有MVVM啥的

最近看到很多文章都在说MVP怎么怎么好,还有MVVM啥的,请问你认为哪个比较适合android,而你现在采用的是哪些模式呢?

【郭霖】A:郭霖

对于这个问题,我还是有点心得的。像MVP这种架构模式,肯定是有它的意义的,它提供了一种设计规范,让我们能把业务逻辑从Activity中提取出来,让代码看起来更工整,这里先给个肯定。但至于用不用那就纯粹是看个人了,比如我自己就是不用的。对于架构模式这种东西没必要迷信,好像大家都说这个好,那我也必须要用这个,因为代码永远也是写不到最好的,如果你觉得你自己完全能够管理好Activity中的业务逻辑而不会混乱不堪的话,那也完全可以不用MVP模式,在MVP出现之前仍然有需要出色的代码架构,这些都是靠工程师自己的思路创造出来的,而不是按照一个模式循规蹈矩写出来的。在我看来,MVP引入了大量的Presenter这点就做得不够优雅,并且去年Android全球开发者大会谈项目架构时,Google工程师也没有推荐使用MVP,只是提到了一下有这个东西,但话锋一转:今天没准备讲它。如果问我我是使用什么模式来设计架构的话,那我的回答就是,我没有任何模式。但我问遵守一个原则,就是DRY(Don’t Repeat Yourself),当你把同样一段代码写两遍的时候,就是你需要思考去重构的时候,我觉得这样写下来的代码架构同样非常优雅,大家可以试试。

Q:《第一行代码》之后有什么推荐书籍吗?

【郭霖】A:可以看《Android开发艺术探索》这本书,这本书写得挺好的。不过我给你一个建议,最好的学习方式就是做项目,以项目驱动的方式进行学习。当你需要实现一个功能的时候,你需要学习各种相关的技术来完成它,其实在这个过程中你就已经在慢慢成长。如果只看书不练习的话,一是理解层次可能会比较浅,二是学完要不了多久你就又会忘记了。

Q:如何提升自己的编程水平

应该有很多跟我一样的老菜鸟,做android也做了3年甚至更多 但是水平总是跟以前入门一样,到处找点代码贴贴代码。不知道怎么才能有质的提高 希望大神给出宝贵意见

【郭霖】A:我也见过很多你这样的同学,他们做编程有段时间了,但是更深点的东西都不会。或者说搜索能力可以,但是自己学不出来东

西。我给给他们的建议就是先找些小的轮子造一造(可以是重复的轮子,重要的是自己亲自码代码,不是光看)。小轮子造完

了就造大的。当然刚开始的时候你可能会觉得无从下手,感觉小轮子也造不了,那就照着别人的优秀开源项目的片段功能或

模块抄一抄。熟能生巧,时间长了自己就提高了很多,也会自己写出东西了。温馨提示:一定要自己亲手多代码。

Q:你是如何如何快速学习提高技术水平的?

[罗迪]A:有句话说的好: Read the f**k source code。在一项语言基础扎实的情况下,去学习具体平台的开发,绝佳的方式就是阅读优秀的源码。无论代码做得是什么,优秀的代码都会在不经意间让你有所感悟。现在,网上各种文章介绍着各种各样的设计模式。尽管你可能看懂了它的组织形式,却不一定能够融会贯通。阅读源码的过程,你能够真切的体会到一个设计模式的妙处。Google开源了Android这个珍贵的宝藏,阅读它的源码成为了我提高技术水平的方式。Android虽然为开发者提供了详细的文档,但是如果仅仅止步于SDK层,很多的问题你都会有”知道怎么处理,但是不知道原因”的感觉。我敬佩思想的创造人,因为有了思想,轮子可以再造,但是如果没有思想,轮子是不可能造出来的。

读再多的书,不如坐下来写两行代码有成效。编程是实践科学。实践是首要的,其次才是阅读。

读项目源码是一种非常好的学习方式.

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

时间: 2025-01-31 05:13:02

android进阶问答的相关文章

我的Android进阶之旅------>经典的大牛博客推荐(排名不分先后)!!

今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超博客 Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 - 博客园 gundumw100博客 - android进阶分类文章列表 - ITeye技术网站 CSDN博文精选:Android系列开发博客资源汇总 - CSDN.NET - CSDN资讯 Android笔记本--半年来的研究笔记,导航. - 思想实践地 - CSDN博客 [魏祝林]Android中级教程 - Androi

我的Android进阶之旅------>解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug

1.错误描述 今天测试人员提了一个bug,说使用我们的app出现了闪退的bug,后来通过debug断点调试,发现我们的app转换服务器发送过来的json数据后,都是为null.而之前已经提测快一个月的功能,一直都是稳定的,为什么现在会报java.lang.NullPointerException. 2.错误原因 原来我提测了一个月的APP版本一直没有打开混淆开关,而出问题的这个APP版本在即将要发布出去的时候打开了混淆开关.这样的话,我那些要通过转换json数据为bean实体类,因为没有在pro

我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)

对于游戏玩家而言,游戏界面上看到的"元素"千变万化:但是对于游戏开发者而言,游戏界面上的元素在底层都是一些数据,不同数据所绘制的图片有所差异而已.因此建立游戏的状态数据模型是实现游戏逻辑的重要步骤. 1.定义数据模型 连连看的界面是一个NxM的"网格",每个网格上显示一张图片.而这个网格只需要一个二维数组来定义即可,而每个网格上所显示的图片,对于底层数据模型来说,不同的图片对于着不同的数值即可. 对于上图所示的数据模型,只要让数值为0的网格上不绘制图片,其他数值的网

我的Android进阶之旅------>介绍一款集录制与剪辑为一体的屏幕GIF 动画制作工具 GifCam

由于上一篇文章:我的Android进阶之旅------>Android之动画之Frame Animation实例 中展示的是Frame动画效果,但是之前我是将图片截取下来,不好说明确切的动画过程,因此今天百度了一下gif动画的制作工具,找到了这款不错的软件GifCam.然后我使用该软件将动画制作成gif动画,然后更新了上一篇文章上传了新制作的gif动画,使博客的说明效果更佳. 该软件的界面如下所示: 该软件的操作步骤如下: 1.拖动 GifCam 标题栏,改变其位置,并调整 GifCam 窗口大

我的Android进阶之旅------>Android疯狂连连看游戏的实现之开发游戏界面(二)

连连看的游戏界面十分简单,大致可以分为两个区域: 游戏主界面区 控制按钮和数据显示区 1.开发界面布局 本程序使用一个RelativeLayout作为整体的界面布局元素,界面布局上面是一个自定义组件,下面是一个水平排列的LinearLayout. 下面是本程序的布局文件:/res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=

我的Android进阶之旅------&amp;gt;Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piece对象时,程序会直接调用ImageUtil的getPlayImages()方法去获取图片,该方法会随机从res/drawable目录中取得N张图片. 下面是res/drawable目录视图: 为了让getPlayImages()方法能随机从res/drawable目录中取得N张图片,具体实现分为以下几步: 通

我的Android进阶之旅------&amp;gt; Android为TextView组件中显示的文本添加背景色

通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article/details/46916963)      我们学会了在TextView中显示图片的方法,现在我们来学习如何为TextView组件中显示的文本添加背景色.要求完成的样子如图所示: 首先来学习使用BackgroundColorSpan对象设置文字背景色,代码如下: TextView textView=(

我的Android进阶之旅------&amp;gt;HTTP 返回状态值详解

(本文转载于:http://blog.csdn.net/ithomer/article/details/10240351) 当用户点击或搜索引擎向网站服务器发出浏览请求时,服务器将返回Http Header Http头信息状态码,常见几种如下: 1.Http/1.1 200 OK 访问正常   表示成功访问,为网站可正常访问时的状态. 2.Http/1.1 301 Moved Permanently 301重定向永久重定向   对搜索引擎相对友好的跳转方式,当网站更换域名时可将原域名作301永久

我的Android进阶之旅------&amp;gt;Android权限参考大全

访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置 android.permission.ACCESS_FINE_LOCATION,通过GPS芯片接收卫星的定位信息,定位精度达10米以内 访问定