当前位置: 首页 > 科技观察

我学习Android的一些方法

时间:2023-03-18 13:02:44 科技观察

今天给大家分享一下我学习Android的一些方法和思路。分享不限于如何学习Android的哪一部分。它是一个整体的、通用的学习套路和方法。希望它能帮助你解决一些问题。注意,本文知识点比较分散,后面部分包含一些观众提出的问题,但不影响整体阅读理解。Android需要打下哪些编程基础?Java基础(Kotlin)OOP思维与设计模式Android基础数据结构与算法其他,如JVM相关除了编程基础,还需要补充哪些能力?总结的习惯高效的学习方法能明智地使用谷歌搜索善于使用工具和类比真实事物的能力对待问题的态度1.喜欢学习,虽然高级编程语言的出现让我们能够专注更多精力放在业务上,而不是编程细节上。俗话说知其然,知其所以然,深究细节才能更好的帮助我们实现业务,明晰业务。2、良好的英语理解能力。由于某些原因,我们接触到的一些技术信息是二手信息,而这些二手信息往往在知识传递的效果上存在一些折扣甚至偏差。英语可以说是(Android)编程提升的加速器。同时,如果英语好,可以帮助我们写出更多自解释的代码。3、善于思考和总结的习惯。真理越辩越明,技术越思越明。对于一个技术,我们通常需要有这样的疑问。它是什么?它是什么?问题是什么?存在的意义是什么?如何解决问题?内部实现的缺点是什么?js是否支持混合内容(https网页加载http图片)与js通信,比如在方法中添加JavaScriptInterface注解,是否自己处理某些url(不同的协议,不允许flipboard://showSection等)或者交接给外部程序关于UA是否添加特定的标识,比如Flipboard这个词是否添加特定的header,我们需要以文本的形式记录下来,这也正应了那句老话,好记性不如好记性好如坏笔。建议以博客的形式总结一下。4.高效的学习方法。清楚地理解这个概念非常重要。做好控制变量的方法。多动手实践,结合理论。抓住重点,排除干扰因素。其实任何复杂的东西都是由简单的东西组成的,编程也是一样。在编程的过程中,我们会接触到很多概念。这些概念非常重要。对概念的一点了解,往往会让我们走得越来越慢,结果反而更难学。因此,有必要准确而深刻地理解编程中的概念。控制变量法:我们初中做实验的时候,经常用到控制变量法。Red也在编程。我们在解决问题的时候,也要控制一个修改。例如,我们需要修复项目中与webview相关的错误。我们不得不思考,能不能脱离庞大而负责任的项目,写一个单一变量的简单样本来重现,从而达到快速、小粒度的验证。多动手实践结合理论:很多时候,我们学习一门新技术,首先应该学会使用。有了初步的了解之后,方便我们更好的理解和深入研究。比如关于GUI的东西,我们要时不时的做一些东西,理论和实践要相辅相成。抓住重点,排除干扰因素:任何复杂的事物都是简单而错综复杂的,拆分去除无关因素或干扰因素,以补充理解问题所必需的知识具体分析:看其实现原理和运行机制(如通过分析源码,我们知道HandlerThread无非是一个线程,有自己的和初始化的Handler)摘要总结:从适度抽象的角度总结5.明智地使用谷歌。从事编程工作,使用谷歌是必须的。虽然国内访问不了,但是对于聪明的程序员来说不是问题。通常,我将要搜索的知识点转换成英文,不包括中文。优先考虑stackoverflow和googlegroups的内容。相比之下,中文相关资源不是很可靠,质量普遍较低。6、善用工具,多使用终端,尝试写一些脚本来解决重复性的工作。Python、Ruby和Shell脚本都可以帮助您编写很多强大的工具。例如全文搜索关键词工具grep-E$1--exclude-dir={.git,lib,.gradle,.idea,build,captures}--exclude={*.png,*.jpg,*.jar}。-R--color=always-n可以查出包含某个关键字的文件和Android工程下的行数。快速获取当前Activity的名称adbshelldumpsyswindowwindows|grep-E'mCurrentFocus|mFocusedApp'--color=always快速查看json文件是否合法https://github.com/androidyue/DroidScripts7.将类比与真实事物联系起来的能力随着编程时间的增加,我们会发现程序中的很多概念都与现实生活中的事物有相似之处。比如我们在现实生活中使用的数据库索引和字典索引。优点是容易快速找到。缺点是索引过多会增加占用,增删改查索引会比较慢。比如对象池,类似于现实中饭店里的公共餐具。当我们都需要回收的时候,清理脏数据,以免影响下次使用。比如肯德基里面的餐具回收人员,其实和JVM的GC差不多,什么时候回收餐具。如果一个对象没有被其他对象持有,它就可以被回收。即餐桌上没有人,只有通常可回收的餐具。如何做到联想类比了解编程中的具体概念,抓住问题的重点和关键行为,选择现实中习惯的事物和行为进行类比,不要选择模糊的。提取公共点并检查它们是否匹配。8、对待问题的态度对待问题的态度要积极。你不能得过且过。比如在处理不容易/不可复现的问题时,即使手边没有可复现的机器,也尽量通过模拟/使用云设备来复现。对于目前只有自己在处理的问题,不要隐瞒,尽量公开,让自己和其他人更好地发现和解决。作为一名Android程序员,如何把握技术的广度和深度对Android有太多的诱惑,比如ReactNative、小程序、热更新、插件。我理解的应该是先从广度扩展,再深入研究。什么时候需要横向扩展?初学者的工作量和业务量很大,比如浏览器开发(常见的App开发技术,HTML+Javascript等技术)。什么时候需要垂直进行中高级开发?追求更深入的细节和想法。工作内容需要横向。ReactNative等开发了哪些技术简单的后台开发Java/PHP/Python/RubyIOS等应用开发总而言之,多垂直开发系统源码是什么各种技术的实现机制操作系统相关知识等都在所有,好好学习启然知道为什么。就个人而言,我更愿意花更多的时间进行深入研究。在这个过程中,我会逐渐养成对技术吃透的能力。有了这个能力,我就可以触类旁通,学习其他技术也更加轻松。另外,工作需要的时候,是影响你往哪个维度发展的重要因素。所以要慎重选择公司。通常,大公司和优秀的团队会帮助你垂直发展。小公司和初创公司会更影响你的横向发展。如何从日常工作中获得最大收益在日常工作中,我们都在做公司项目。如果我们要利益最大化,我们需要不要把我们的需求仅仅局限在功能的实现上(比如完成一个接口并不意味着你的利益最大化,而只是意味着任务完成了)去理解什么您正在使用。技术的原理和本质。不要止步于API的使用,否则你将无法提升你的竞争力。比如我们会使用LRUCache来加载Bitmap,我们至少需要了解LRUCache的原理,有条件的话,了解其内部实现机制。项目中有好的地方,所以我们要想好的地方在哪里。考虑这种技术的一般场景。在项目中思考更好的解决方案。比较两种选择的优缺点。比如听完《Android Performance Pattern》关于ArrayMap的讲解,考虑到HashMap的空间占用,不要急于替换。有必要做个对比(要理解HashMap和ArrayMap),结合业务场景选择最适用的。如果在项目中遇到问题,建议先解决,然后抽空研究一下这个技术的原理和细节。必须进行后续研究。善于总结,把自己的经验和教训写成博客与他人分享。日常工作为我们提供了很多好的做法和不好的问题,是技术提升的宝贵源泉。Android库那么多,到底应该选择哪些,怎么学,学到什么程度呢?库的存在就是为了封装细节,简化调用者的实现或者帮助我们更方便的发现问题。例如,ButterKnife使用注解来简化视图搜索和类型转换等功能。至于如何选择那些库,判断这个库是否必要,这个库是否可以提高开发效率,降低代码维护成本。这个图书馆的学习成本是多少?比如rxjava其实学习成本比较高。这个库质量如何,不要只看star,还要看Flipboard常用库的issue处理(部分)LeakCanaryAndroid和Java的内存泄漏检测库。StethoStetho是Android应用程序的调试桥,支持强大的Chrome开发者工具等。ButterKnife将Android视图和回调绑定到字段和方法。Baber自定义视图样式库GoldenGateAndroid注释处理器,用于在MaterialDesign中生成类型安全的javascript绑定MaterialEditTextEditText。..关于库,首先我们要掌握它的使用方法,还要了解它的运行机制。对于初学者,对大学生有什么建议?越来越多关于互联网寒冬的消息传出。我听到越来越多的人抱怨安卓越来越难找工作,已经接近饱和。Android开发的红利期正在消退,尤其是对于初中级开发者而言。我不反对现在加入Android开发团队。容器、机器学习和人工智能仍然可以赶上红利期。但是无论选择哪种技术,哪怕是Android,都请基础好,编程能力强,爱好足够。不要只追求物质的东西。一直想学,但一直坚持不下来有志气就好。如果难以坚持,可能的原因是你是否学会了,或者自制力差。如果还没有学过,可以参考上面提到的学习方法。如果是自制力,可以通过自我监督和他人监督来提高。不知道去哪里学习Android,可以边工作边学习吗?学习Android的方式有很多种,可以是自学(视频网站、看书、博客),也可以是培训(不推荐)。边工作边学习通常是可以的,但具体实施还需要结合自己的情况,比如时间是否充裕,学习者的决心和自主学习能力等。准备春招,不会数据结构和算法怎么办?无论是春招还是秋招,基础知识的掌握都是非常重要的衡量标准。毕竟,毕业生的实践经验较少。数据结构和算法应该是不可分割的一部分。建议多做准备工作。展现完美状态迎接春招面试。你有什么样的个人项目才能具有竞争力?如果这个项目是一个App,首先要有足够的用户,比如月活几万。存在低级BUG(如卡顿问题)App明显可以解决用户痛点如果这个项目是开源项目,星数够多(不过这个已经被破解了)Issue处理情况贡献者数量设计思路优秀代码实际上是不言自明的吗?学习成本和维护成本尽可能低。如何选择网络上的混合学习资料?使用谷歌、StackOverflow、Medium。对于文章的优缺点,可以到文章底部阅读评论(Good、Execellent、Awesome)以及在Google+、Facebook、Twitter上的分享数。尽量选择内容干净(表示态度认真)、学习效果差的文章。看了很久的慕课和论坛,感觉效果很差。通过视频学习感觉自己进步很大,但是即使学完了也觉得自己还是个菜鸟。原因:通常,视频网站传授的技能通常对每个人都是直接的。学习上缺乏思考,无法举一反三。只知道基础薄弱,概念不清晰。这样一来,上层的事情就很难办了。没有比较好的辅助工具或者找不到优秀的辅助内容。如何提升Android程序员的核心竞争力,项目理解能力和技术能力哪个更重要?什么是核心竞争力。表现在学习技术的能力、对待问题的态度、技术解决问题的能力上。其他行业也是如此。具体如何提高核心竞争力,我上面提到参考程序员需要具备其他能力。这两种能力相辅相成,很难做出哪个更重要的决定。Android老程序员的烦恼我经常收到一些Android程序员的邮件,其中很多是说自己从事Android工作多年,对自己未来的职业选择感到难过。比如互联网寒冬,华为解雇34岁以上员工等等。确实,因为Android相关工程师的需求不如以前,而且年龄越大,努力程度可能还不如刚毕业的年轻人。这种烦恼是可以理解的。一些摆脱困境的方法不断学习,打好基础,拓展技术面。为什么老是提到这个,因为其实有很多程序员逻辑思维不强,不爱学习。持续学习对于程序员来说是必不可少的。提高竞争力,不要成为只为API编程的程序员。勤于思考,追求更高。求上者得之,求者得下。你要改变5年前的你,甚至10年前的你,而不仅仅是重复5年或10年的技能。建立个人品牌:写博客、写书、开源项目、编写独立的应用程序等。请注意,任何这些都是需要长期坚持才能完成的事情。其实现代人的很多烦恼,不管是不是程序员,都是对物质生活的恐惧。买车、买房、家庭开支等等。以及自己的能力无法满足物质支出的恐惧和担忧。改变不了的时候,适当调整心态。尝试将知识货币化,但需要不断积累,需要时间。这不可能一蹴而就。关于comfortzone,learningzoneandfearzone的理论理论“comfortzone”,对于你来说,没有什么难学的知识或者你习以为常的事情,你可以处于一种舒适的心理状态。“学习区”对我来说有一些挑战,所以我感到不舒服,但不是太不舒服。在“恐慌区”,超出自己能力范围的事务或知识太多,心理感受会严重不适,可能导致崩溃而放弃学习。对于一个人来说,最理想的状态就是处在“学习区”,学习一些具有适当挑战性的东西。一段时间后,“学习区”会逐渐变成“舒适区”,“舒适区”会越来越难。大了,一部分“恐慌区”会相应变成“学习区”。