在我们的身边,存在一个普遍现象:很多人从事Android开发工作多年,走过的弯和坎,不计其数,经历的心酸难与外人道也。可是技术确难以提升、止步不前,薪资也只能看着别人水涨船高,自己却没有什么起色。

虽然在公司里属于不可缺少的一员,但是同时又担心离开了这家公司就找不到更好的工作了。

有这种焦虑的朋友或许应该思考一下这个问题:如何提升自己在 Android 市场上的竞争力?

首先我们要解决一个问题:为什么很多人会一直停留在两三年的水平上,而后一直在重复以往的经验?

我认为最主要的一点就是主观能动性,或者说兴趣,如果你对Android开发没有太大的兴趣,那么还是尽早换方向吧。有了兴趣,然后就是要有一个比较正确的钻研路线,不要这也搞那也抓,最后什么都没精通又好像什么知道。

第一阶段

在面试中,很多面试者以用过很多库为荣,你真的去了解过这些库么?研究过源码吗?没有怎么改善?

对于Android源码和第三方库源码阅读,可以根据自己感兴趣的类型,选择相应的源码库或模块,给自己约定一个时间点,看完之后最后有个流程图,哪些是核心类,类与类之间都有什么关系,这些开源代码实现的机制是什么,用到哪些解决思想,这些要点最终可以通过文章输出,我觉得输出倒逼输入是一种很不错的学习方式。

提升通用技术能力。一来通用技术如数据结构和算法、计算机网络、操作系统、计算机系统结构等,对技术的深层理解有很大的帮助,二来这类技术在不同的语言和技术方向上切换时是共通的。

第二个阶段

我觉得可以尝试去了解Android Framework比较细节的一些东西,比如activity启动流程,顺便分析清除Activity stack的管理,比如了解Android的资源加载机制,顺便了解aapt是如何打包Android资源的;又比如Java的类加载机制,这里配合资源的加载机制,很自然的就可以去了解Android的hotpatch机制,插件化的实现,开一些这方便的开源库或者自己撸一个也就自然而然。

第三个阶段

现在去很多公司面试,除了你具备基本的能够写一个高性能app的能力后,一般都会在自己的app里面加一些现有的相对较牛掰的技术,这些技术我们称之为前沿技术。

他们一般包含热升级,热修复,App Instant,强制更新,组件化路由架构Arouter,RxJava,IOC架构方法,Hook技术等等,当然,这些技术你不能只会用,你需要知道他的原理,有时候,你还需要知道如何对这些架构进行改进。

另外,非常重要的一点,Android开发者不愿意接受新知识,所以对于现在Google推出的新的技术方案毫无感觉,这些都是被 control C 和control V所毒害,开源让开发者失去了自我,失去了基本的编码能力,失去了深入学习的信心和毅力,所以对于很多google推出的新技术好组件(Google I/O 大会新技术),好框架已经很多人不愿意去学习了。这是不应该的,我们需要好好学习啊。

第四个阶段

提升软实力。软实力实际上也是一项通用的技能,甚至比第一条更加通用。

良好的沟通可以缩短开会的时长、节省相互之间的沟通成本,也使得团队合作更加愉快。不错的文档表达能力可以省去不少的重复沟通。

懂得规划自己的时间,上班时能更有条不紊地完成任务,下班也能高效地规划业余时间的学习。

懂得反思:为什么这个任务预计五小时能完成,却变成了三天;为什么这个需求要这样做,这么做是最合理的吗,还有更好的方式吗?

对问题、业务和自身的更多思考有助于更好地发挥和展现你的技术实力。

最后

在这里,我想给想进阶的朋友们一点建议:很多时候,很多事情,并不像你想象中的那么简单,千万不要自认为简单而不愿意去做,很多东西只有你亲手去做了之后,才会发现事情并不像你最初想的那么简单。

做为一名Android开发者,我想分享一下这些年来,我对于技术一些归纳和总结,希望能帮助到有心在技术这条道路上一路走到黑的朋友!

1.高级UI,自定义View

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

2.NDK模块开发

时至今日,短视频App可谓是如日中天,一片兴兴向荣。随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%。

内容主要涉及以下几个方面:

  • NDK 模块开发
  • JNI 模块
  • Native 开发工具
  • Linux 编程
  • 底层图片处理
  • 音视频开发
  • 机器学习

3.数据结构与算法

为什么要研究数据结构?

这是因为所有的程序本质上是对数据进行处理,如何高效的处理数据,这依赖于数据本身的结构(如类型(整型、浮点型等)、维数、是否为复杂类型(结构体类型、类类型)等)以及数据之间的逻辑关系(线性、非线性等)。

数据结构离不开算法,设计好的数据结构就是为了让算法顺利方便的实施。

4.Java进阶与内核原理

内容主要涉及以下几个方面:

  • HashMap
  • ArrayList
  • LinkedList
  • Hashset源码分析
  • 内存模型
  • 垃圾回收算法( JVM )
  • 垃圾回收机制和调用 System.gc()的区别
  • 类加载过程
  • 反射
  • 多线程和线程池
  • 设计模式
  • Java的泛型

    等等.......

5.Flutter技术进阶

本篇知识要点:

1、Flutter跨平台开发概述

2、Windows中Flutter开发环境搭建

3、编写你的第一个Flutter APP

4、Flutter Dart语言系统入门



6.360度全方面性能调优

随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

4、项目实战

  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践

7.Framework精编内核解析

主要内容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 进程系统
  • 深入解析 WMS
  • PackagerManagerService

8.Jetpack架构组件从入门到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架构组件之Lifecycle
  • Android Jetpack Compose 最全上手指南

想进阶Android高级工程师和需要PDF文档的朋友都可以加入这边的交流qun,前面:1102,,中间:405,,最后:044

裙里从学生到大佬都有,资源免费分享,不见不散哦!

三年Android开发,月薪一万二,不敢跳槽,每天都很焦虑的更多相关文章

  1. 【Android开发VR实战】二.播放360°全景视频

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...

  2. 一个三年Android开发的总结-开篇

    一个三年Android开发的总结-开篇 转眼间全职从事Android开发已有三年,想把这一阶段的积累总结记录并展现出来,作为Android开发必备的知识,希望对有一定Android开发基础的人进阶有裨 ...

  3. 三年Android开发,竟只会增删改查,被面试官一顿怼!

    最近看到某公司面试官发的这样一个帖子: 我面试了一个有三年Android开发经验的小伙子,也是我有史以来给别人面试时间最短的一次,不到十分钟就结束了,原因很简单,底子太差只会curd,很多技术性的问题 ...

  4. Android开发 - 掌握ConstraintLayout(二)介绍

    介绍 发布时间 ConstraintLayout是在2016的Google I/O大会上发布的,经过这么长时间的更新,现在已经非常稳定. 支持Android 2.3(API 9)+ 目前的Androi ...

  5. Android开发学习笔记(二)——编译和运行原理(1)

    http://www.cnblogs.com/Pickuper/archive/2011/06/14/2078969.html 接着上一篇的内容,继续从全局了解Android.在清楚了Android的 ...

  6. Android开发-浅谈架构(二)

    写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...

  7. Android开发基础规范(二)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52614696 前言:Androi ...

  8. 三年Android开发快手、美团、支付宝连挂,怒刷1549页面试题字节上岸

    刚开始面试的时候我真的是处处碰壁,面一家挂一家,面完之后怀疑自我,是不是自己真的太菜了找不到工作.工作本身就是双向选择,一家不行再换一家,总有合适的,千万不要因为别人的一句话就全盘否定自己,一定要自信 ...

  9. 说实话,Android开发月薪3W,谁不酸呢?

    近期有个网友在某匿名区晒字节跳动Offfer,毕业一年月薪3W,引发众多读者羡慕,纷纷留言酸了.酸了.但进大厂的要求还是蛮高的,需要在技术实力上有一定的积累,今天给大家分享一份高质量笔记, 助力大家技 ...

随机推荐

  1. Custom Controller CollectionQT样式自定义 002 :NoteSlider 标签滑动条

    先上效果图 这个效果可以根据需求再定制,比如说文本框换成一个点下出现的气泡,跟随游标移动. 思路:继承QSlider,重写鼠标事件,添加label部件,定义其动作事件 源码:https://githu ...

  2. 第14章:部署Java网站项目案例

    1 说明 (1) 项目迁移到k8s平台的流程 1) 制作镜像 dockerfile.docker+jenkins持续集成.镜像分类:基础镜像.中间镜像.项目镜像 2) 控制器管理pod 控制器管理po ...

  3. Ubuntu 更换内核

    Ubuntu 更换内核步骤: 下载内核源码,例如wget https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz 按照需要的环境,sudo ap ...

  4. CRM软件从哪些方面帮助企业更上一层楼

    CRM顾客智能管理系统可以将"以顾客为管理中心"的管理模式与高新科技方式紧密结合,协助公司搭建优良的客户关系管理,改进顾客的消費感受,进而提升顾客的满意率,为公司产生大量的盈利.据 ...

  5. Docker环境RabbitMq配置SSL

    RabbitMQ要对外提供服务,考虑到安全性,配置SSL进行访问,ssl端口5671,内部仍然使用5672进行访问,两者同时兼容. 安装环境 CentOS 7.5 Docker 1.13.1 Git ...

  6. ctf实验吧逻辑问题

    ctf5.shiyanbar.com/web/5/index.php 绕开. php题,习惯先看源码,F12,结果发现了 url输入了一看 告诉了我们后台逻辑.分析一下,发现只要使得$row[&quo ...

  7. XCTF_MFC逆向

    讲道理这题有点脑洞,也可能我太菜了,首先对mfc就不太熟悉,不知道是个啥玩意,只能边看大佬的wp百度边做了,之后要恶补一下mfc的知识了. 题目一开始说flag在控件中,看到大佬都是用Mfcspy来找 ...

  8. ffiddler抓取手机(app)https包

    很多同学有看过原文,但是按照原文还是没有设置成功(我就是其中一个)然后查了网上资料,在某些选项上进行增加,填写,配置通过.(和原文略有不同) 安装Fiddler,我们正常的流程在feiddler中设置 ...

  9. 题解 SP3591 PATHEADS - Patting Heads

    类似桶排 先看有多少头奶牛抽出这个数 再看这个数的奶牛能拍多少人的头(别忘了-1,自己不能拍自己) 最后根据输入输出 110ms #include<bits/stdc++.h> using ...

  10. 基于YARP实现的FastGithub

    前言 最近开源的两个项目,先是FastGithub,旨在解决访问github抽风的问题.然后开发HttpMouse项目,基于yarp的http公网反向代理到内网的服务端与客户端库,在开发HttpMou ...